regulärer Ausdruck |
10.09.2014, 13:42 | Auf diesen Beitrag antworten » | ||||||||
Haevelin | regulärer Ausdruck Der folgende Ausdruck soll durch einen regulären Ausdruck beschrieben werden: eine Folge von 1 und 2, wobei der Gesamtausdruck eine gerade Anzahl von Elementen haben soll zwischen 0 und 8. Ich habe folgende Lösung: (1|2){0,2,4,6,8} Ist das richtig? |
||||||||
|
|||||||||
10.09.2014, 15:56 | Auf diesen Beitrag antworten » | ||||||||
Haevelin | RE: regulärer Ausdruck Jetzt habe ich eine Verbesserung: (11|12|21|22){0,4} Ist das richtig? |
||||||||
10.09.2014, 20:01 | Auf diesen Beitrag antworten » | ||||||||
Karlito | Dazu ist die Frage,wie bei euch reguläre Ausdrücke definiert sind. In der Definition, die ich aus den Vorlesungen kenne, gibt es keine Minima und Maxima. Mit grep getestet ist deine erste Veriante falsch und deine zweite Variante richtig. Hier noch 2 etwas kürzere Varianten: - ((1|2)(1|2)){0,4} - ((1|2){2}){0,4} Gruß, Karlito |
||||||||
12.09.2014, 11:50 | Auf diesen Beitrag antworten » | ||||||||
as_string | Warum nicht einfach eine Character Class mit 1 und 2 definieren, etwa so:
Und man braucht wahrscheinlich schon die Zeilenanfangs und -end Marker, oder? Gruß Marco |
||||||||
Anzeige | |||||||||
|
|||||||||
12.09.2014, 11:54 | Auf diesen Beitrag antworten » | ||||||||
Karlito | @as_string: Gute Idee mit den Charactern. Die Anfangs- und Endmarker sind aber nicht erforderlich, da nicht gefordert ist, dass es sich um Zeilen mit ausschließlich diesem Inhalt handelt. Das Pattern darf also auch irgendwo stehen. Gruß, Karlito |
||||||||
12.09.2014, 14:16 | Auf diesen Beitrag antworten » | ||||||||
as_string | Hallo Karlito! Naja, im Nachhinein hatte ich gesehen, dass die Character-Class auch nicht wirklich kürzer ist, als die (1|2) Schreibweise... Mit den Ankern: Die Frage ist, für was man es genau braucht: Wenn Du keine Anker hast, dann "trifft" das Muster ja prinzipiell immer, wenn auch der Treffer als solches leer ist (wegen der 0 im Quantifier). Ich hatte nämlich erst probiert ohne Anker und nur gefragt: Trifft das Muster an sich oder nicht. Da hatte ich dann immer einen Treffer, egal was ich als Eingabe hatte. Und das mit dem "geradzahlig" ist dann auch so ein Punkt. Wenn Du nämlich "121" hättest, würde das Muster ja sonst auch Treffen, halt nur auf die ersten beiden Ziffern, aber es wäre ein Treffer. Wenn man den Treffer als solchen weiter verwenden will und es ist egal, ob noch mehr außenrum steht, dann mag das sicherlich auch eine sinnvolle Verwendung mit dem Muster ohne Anker geben, da hast Du natürlich völlig Recht! Hängt also, wie gesagt vom Einsatzzweck ab. Gruß Marco |
||||||||
13.09.2014, 01:43 | Auf diesen Beitrag antworten » | ||||||||
Karlito | Hi Marco,
Wieso? Ist doch gut, man spart immerhin ein Zeichen Und es ist eleganter, finde ich.
Gutes Argument, daran habe ich nicht gedacht,
Müsste es nicht zweimal treffen? Einmal für die ersten beiden Ziffern und einmal für die letzten beiden Ziffern?
Ich vermute das Beispiel ist rein akademisch... Danke auf jeden Fall für die Ergänzung und Verbesserung! Gruß, Karlito |
|