Reg Exp: Mindestens eine Ziffer an beliebiger Stelle
Nick
- php
0 Tom0 Vinzenz Mai0 Tom0 Tom
0 Nick0 Vinzenz Mai0 Nick
0 Der Martin
Hallo,
könnte mir jemand einen Tipp geben, wie ein regulärer Ausdruck aussehen muss, der mit Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle matcht?
abcd1 - Match
ab1cde - Match
1ab - Match
abcdef - Mismtach
ab - Mismatch
a - Mismatch
usw.
Grüße
Nick
Hello,
könnte mir jemand einen Tipp geben, wie ein regulärer Ausdruck aussehen muss, der mit Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle matcht?
vielleicht so:
~^.*d+.*$~
siehe http://de2.php.net/manual/en/reference.pcre.pattern.syntax.php
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
könnte mir jemand einen Tipp geben, wie ein regulärer Ausdruck aussehen muss, der mit Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle matcht?
vielleicht so:
~^.*d+.*$~
*äh* ~^.*\d+.*$~
siehe http://de2.php.net/manual/en/reference.pcre.pattern.syntax.php
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom,
vielen Dank für deine schnelle Antwort.
vielleicht so:
~^.*d+.*$~
*äh* ~^.*\d+.*$~
Das ist schon sehr mal gut, nur lässt .* ja nicht nur Kleinbuchstaben zu.
~[1]*\d+[a-z]*$~ müsste aber passen, oder?
Wenn es insgesamt 20 Zeichen sein sollen, muss ich dann mit runden Klammern arbeiten?
Geht das so? ~^([a-z]*\d+[a-z]*){20}$~
Grüße
Nick
a-z ↩︎
Hallo,
~[1]*\d+[a-z]*$~ müsste aber passen, oder?
das könnte bei a1a1a mismatch geben, oder?
ok, Du willst also genau das umsetzen, was ich in meinem ersten Beitrag mit Worten beschrieben habe. Dachte ich mir's doch.
Die erforderliche Modifikation ist doch ganz einfach.
Welche Zeichen musst Du in der Zeichenklasse hinter der Ziffer noch zulassen.
Und ja: entferne das Pluszeichen!
Freundliche Grüße
Vinzenz
a-z ↩︎
Grüße,
muss man bei "Mindestens eine ziffer" überhaupt auf etwas außer ziffer prüfen?
.*[0-9]+.* oder ä. wäre doch shcon drin? (jaaa ich habe kein ahnung von regexp und vergessen wer der */+ für 0<= oder 1<= steht^^)
MFG
bleicher
BTW:
bleicher.isgreat.org: This Account may have reached its limit, is suspended or this domain no longer exists.
Grüße,
bleicher.isgreat.org: This Account may have reached its limit, is suspended or this domain no longer exists.
jep - scho länger :( aber was soll ich machen?
MFG
bleicher
Hallo,
~[1]*\d+[a-z]*$~ müsste aber passen, oder?
nicht unbedingt. Die Aufgabe ist ungenügend beschrieben.
Darf nur an einer Stelle eine Ziffernfolge von mindestens einer Ziffer auftreten oder dürfen an mehreren, mindestens aber einer Stelle Ziffern auftreten:
abc1def2ghi
Soll das Muster passen oder nicht?
Wie bereits gefragt:
Welche Zeichencodierung verwendest Du?
Welche Kleinbuchstaben gestattest Du?
Wenn es insgesamt 20 Zeichen sein sollen, muss ich dann mit runden Klammern arbeiten?
Geht das so? ~^([a-z]*\d+[a-z]*){20}$~
Nein, das verlangt allein schon mal mindestens 20 Ziffern :-)
Die 20 Zeichen prüfst Du sinnvollerweise mit einer passenden Funktion, nicht mit einem Muster.
Freundliche Grüße
Vinzenz
a-z ↩︎
Hallo,
könnte mir jemand einen Tipp geben, wie ein regulärer Ausdruck aussehen muss, der mit Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle matcht?
abcd1 - Match
ab1cde - Match
1ab - Matchabcdef - Mismtach
ab - Mismatch
a - Mismatch
Du hättest also gern
den Beginn der Zeichenkette,
gefolgt von beliebig vielen, auch 0, Kleinbuchstaben,
gefolgt von einer Ziffer,
gefolgt von beliebig vielen, auch 0, Kleinbuchstaben oder Ziffern,
gefolgt vom Ende der Zeichenkette
Sollte mit dem Link von Tom einfach umzusetzen sein.
Hinweise:
Toms Vorschlag passt nicht exakt zu dem von Dir beschriebenen Problem.
Du solltest die PCRE verwenden und von den POSIX-erweiterten regulären Ausdrücken Abstand nehmen.
Das Pluszeichen, das Tom verwendet, ist überflüssig, der Punkt falsch.
Fragen:
Welche Zeichencodierung verwendest Du?
Was sind für Dich Kleinbuchstaben?
Welche Auswahl gestattest Du?
Freundliche Grüße
Vinzenz
Hello,
Das Pluszeichen, das Tom verwendet, ist überflüssig,
Wieso ist das überflüssig?
der Punkt falsch.
Ok, ich habe überlesen, dass nur Kleinbuchstaben gefordert waren.
Und dann fällt mir noch das Stichwort "Greedyness" ein, je nach Voreinstellung der RegExpMachine
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Das Pluszeichen, das Tom verwendet, ist überflüssig,
Wieso ist das überflüssig?
Na gut, gebe mich geschlagen. "mindestens einer Ziffer" ... Dafür teicht das \d tatsächlich.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Vinzenz,
vielen Dank für deine Antwort.
Du hättest also gern
den Beginn der Zeichenkette,
gefolgt von beliebig vielen, auch 0, Kleinbuchstaben,
gefolgt von einer Ziffer,
gefolgt von beliebig vielen, auch 0, Kleinbuchstaben oder Ziffern,
gefolgt vom Ende der Zeichenkette
Genau, oder wie ich es mit anderen Worten ausdrückte: Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle. ;-)
Sollte mit dem Link von Tom einfach umzusetzen sein.
Hinweise:
Toms Vorschlag passt nicht exakt zu dem von Dir beschriebenen Problem.
Du solltest die PCRE verwenden und von den POSIX-erweiterten regulären Ausdrücken Abstand nehmen.
Aus welchem Grund?
Das Pluszeichen, das Tom verwendet, ist überflüssig, der Punkt falsch.
Aber das Pluszeichen steht doch für "mindestens einmal"!?
Wieso ist der Punkt falsch?
Welche Zeichencodierung verwendest Du?
UTF-8
Was sind für Dich Kleinbuchstaben?
Ist das nicht eindeutig? Nee, du hast recht. Gemeint waren die Buchstaben von a-z, keine Umlaute und kein Eszett.
Welche Auswahl gestattest Du?
Wie meinen?
Grüße
Nick
Hallo,
Hinweise:
Toms Vorschlag passt nicht exakt zu dem von Dir beschriebenen Problem.
Du solltest die PCRE verwenden und von den POSIX-erweiterten regulären Ausdrücken Abstand nehmen.Aus welchem Grund?
lies doch bitte einfach die Beschreibungen zu den Funktionen durch. Welches Merkmal haben die Beschreibungen gemeinsam?
Das Pluszeichen, das Tom verwendet, ist überflüssig, der Punkt falsch.
Aber das Pluszeichen steht doch für "mindestens einmal"!?
ok, das hängt durchaus von der noch unklaren Aufgabenstellung ab. Deine bisherigen Texte lassen sich nicht darüber aus, ob an zwei unterschiedlichen Stellen Ziffernfolgen von mindestens einer Ziffer vorkommen dürfen.
Wieso ist der Punkt falsch?
das hast Du doch selbst gemerkt: der Punkt steht für beliebige Zeichen, Du gestattest jedoch nur Kleinbuchstaben und Ziffern.
Welche Zeichencodierung verwendest Du?
UTF-8Was sind für Dich Kleinbuchstaben?
Ist das nicht eindeutig? Nee, du hast recht. Gemeint waren die Buchstaben von a-z, keine Umlaute und kein Eszett.
Welche Auswahl gestattest Du?
Wie meinen?
siehe oben: wie oft dürfen Ziffernfolgen vorkommen?
Freundliche Grüße
Vinzenz
lies doch bitte einfach die Beschreibungen zu den Funktionen durch. Welches Merkmal haben die Beschreibungen gemeinsam?
Das war mir zu viel auf einmal.
Das Pluszeichen, das Tom verwendet, ist überflüssig, der Punkt falsch.
Aber das Pluszeichen steht doch für "mindestens einmal"!?ok, das hängt durchaus von der noch unklaren Aufgabenstellung ab. Deine bisherigen Texte lassen sich nicht darüber aus, ob an zwei unterschiedlichen Stellen Ziffernfolgen von mindestens einer Ziffer vorkommen dürfen.
Es muss an mindestens einer Stelle genau eine Ziffer vorkommen, darüber hinaus darf an beliebig vielen Stellen eine Ziffer vorkommen, so dass auch ein String, der ausschließlich aus Ziffern besteht, gültig ist.
Wieso ist der Punkt falsch?
das hast Du doch selbst gemerkt: der Punkt steht für beliebige Zeichen, Du gestattest jedoch nur Kleinbuchstaben und Ziffern.
Ach das meintest du.
Hallo,
Du hättest also gern
den Beginn der Zeichenkette,
gefolgt von beliebig vielen, auch 0, Kleinbuchstaben,
gefolgt von einer Ziffer,
nein, *mindestens* einer Ziffer.
gefolgt von beliebig vielen, auch 0, Kleinbuchstaben oder Ziffern,
gefolgt vom Ende der Zeichenkette
Genau, oder wie ich es mit anderen Worten ausdrückte: Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle. ;-)
Ja, aber die Formulierung von Vinzenz ist präziser und näher daran, sie direkt in Code umsetzen zu können. Deine verbale Beschreibung passt nämlich auch auf einen String, der mehrere Gruppen von Ziffern zwischen Kleinbuchstaben enthält. Aber das willst du ja anscheinend nicht.
Was sind für Dich Kleinbuchstaben?
Ist das nicht eindeutig? Nee, du hast recht. Gemeint waren die Buchstaben von a-z, keine Umlaute und kein Eszett.
Also auch keine griechischen, hebräischen oder kyrillischen Kleinbuchstaben? Da die in UTF-8 alle mit mindestens zwei Bytes codiert werden, wären sie in einem RegEx schwierig zu formulieren.
Ciao,
Martin
Hallo Martin,
danke für deine Antwort.
nein, *mindestens* einer Ziffer.
Stimmt. :-)
Ja, aber die Formulierung von Vinzenz ist präziser und näher daran, sie direkt in Code umsetzen zu können. Deine verbale Beschreibung passt nämlich auch auf einen String, der mehrere Gruppen von Ziffern zwischen Kleinbuchstaben enthält. Aber das willst du ja anscheinend nicht.
Meiner Erachtens nicht. Dann müsste es ja heißen "[...] an beliebigen Stellen."
Also auch keine griechischen, hebräischen oder kyrillischen Kleinbuchstaben? Da die in UTF-8 alle mit mindestens zwei Bytes codiert werden, wären sie in einem RegEx schwierig zu formulieren.
Nee, nur a-z.
Meines Erachtens nicht. Dann müsste es ja heißen "[...] an beliebigen Stellen."
Ich bin schon ganz durcheinander, sorry. Vergiss das bitte.
Anstatt "mindestens eine Ziffer an beliebiger Stelle" hätte ich schreiben sollen "an mindestens einer Stelle eine beliebige Ziffer".
Hi!
Also auch keine griechischen, hebräischen oder kyrillischen Kleinbuchstaben? Da die in UTF-8 alle mit mindestens zwei Bytes codiert werden, wären sie in einem RegEx schwierig zu formulieren.
Nö, es gibt den Modifizierer u, mit dem interpretiert die PCRE-Maschine erstmal alles als UTF-8. Und dann gibt es Metazeichen, die Unicode character properties beachten. \pLl sind alle Kleinbuchstaben, auch die griechischen, kyrillischen, koptischen, armenischen, mathematischen, ...
Beim Recherchieren bin ich auf eine Seite gestoßen, die Unicode Character Properties Excel Workbooks anbietet. Autofilter sind da bereits drin, so dass man problemlos die General Category filtern kann.
Lo!
Hallo,
Also auch keine griechischen, hebräischen oder kyrillischen Kleinbuchstaben? Da die in UTF-8 alle mit mindestens zwei Bytes codiert werden, wären sie in einem RegEx schwierig zu formulieren.
Nö, es gibt den Modifizierer u, mit dem interpretiert die PCRE-Maschine erstmal alles als UTF-8.
danke, wieder was dazugelernt ... :-)
Ciao,
Martin