Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » regulärer Ausdruck » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen regulärer Ausdruck
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

regulärer Ausdruck Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 13:42 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

RE: regulärer Ausdruck Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Jetzt habe ich eine Verbesserung:

(11|12|21|22){0,4}


Ist das richtig?
10.09.2014 15:56 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
10.09.2014 20:01 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Warum nicht einfach eine Character Class mit 1 und 2 definieren, etwa so:
code:
1:
^([12]{2}){0,4}$

Und man braucht wahrscheinlich schon die Zeilenanfangs und -end Marker, oder?

Gruß
Marco
12.09.2014 11:50 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

@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 11:54 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Karlito!

Naja, im Nachhinein hatte ich gesehen, dass die Character-Class auch nicht wirklich kürzer ist, als die (1|2) Schreibweise... Zunge raus

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
12.09.2014 14:16 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi Marco,

Zitat:
Original von as_string
Naja, im Nachhinein hatte ich gesehen, dass die Character-Class auch nicht wirklich kürzer ist, als die (1|2) Schreibweise... Zunge raus


Wieso? Ist doch gut, man spart immerhin ein Zeichen Augenzwinkern Und es ist eleganter, finde ich.

Zitat:
Original von as_string
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.


Gutes Argument, daran habe ich nicht gedacht,

Zitat:
Original von as_string
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.


Müsste es nicht zweimal treffen? Einmal für die ersten beiden Ziffern und einmal für die letzten beiden Ziffern?

Zitat:
Original von as_string
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.


Ich vermute das Beispiel ist rein akademisch...

Danke auf jeden Fall für die Ergänzung und Verbesserung!

Gruß,

Karlito
13.09.2014 01:43 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » regulärer Ausdruck