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

Informatiker Board » Themengebiete » Theoretische Informatik » regulärer Ausdruck » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 7 Beiträge
Karlito

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
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... 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
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
as_string

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
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
Haevelin RE: regulärer Ausdruck

Jetzt habe ich eine Verbesserung:

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


Ist das richtig?
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?