2016-10-26 13 views
0

Ich verstehe das Konzept der Wiederholung 0 oder mehr mal (*) und Gruppierung '()' auf eigene, aber ich habe Probleme, sie zu verstehen gegeben Praxisbeispiele.Probleme mit regulären Ausdrücken

Zum Beispiel, (ja) * enthält sowohl die leere Menge als auch das Wort 'ja', aber nicht y oder ss. Ich nehme an, dass diese Wörter wegen der Gruppierung nicht enthalten sind, aber würde das bedeuten, dass das Wort "Ja-Ja" auch gültig ist, wenn die Gruppe wiederholt wurde?

Im Gegensatz dazu nehme ich an, dass mit dem Regulären Ausdruck 'ja *' jedes Zeichen wiederholt werden kann. Zum Beispiel 'y', 'ye' 'es' 'ja', 'yy'. Die uns zur Verfügung gestellten Lösungen geben jedoch an, dass das Wort "y" nicht enthalten ist. Ich bin verwirrt.

+1

'ja *' stimmt mit 'ye' oder' yes' oder 'yesssssss' überein. Nur das 's' bekommt den Modifikator. –

+0

Wenn du 'y',' ye', 'es',' ja', 'yy' kombinieren willst, musst du eine Zeichenklasse verwenden:' [yes] + ' – Toto

+0

@ chris85 Du hast recht. ..und ich habe in letzter Zeit viel zu viel Zeit mit SO verbracht. –

Antwort

1

Ihr Verständnis von (ja) * ist korrekt ... (ja) * entspricht der Zeichenfolge "ja" (genau - nicht kürzer, nicht mehr) 0 oder mehr Male - dh die leere Zeichenfolge oder ja, ja ja, yesyesyesyesyesyes etc

Aber Ihr Verständnis ja * nicht korrekt ist ... ja * stimmt mit der Zeichenfolge "ye", gefolgt von 0 oder mehr "s" Zeichen - also ihr, ja, yess, yessssssss

1

die "0 oder mehr" * Modifizierer gilt nur für das Zeichen oder die Gruppe unmittelbar davor.

Im ersten Beispiel haben wir die Gruppe (yes)* - die '', 'yes', 'yesyes' usw.

Im zweiten Beispiel übereinstimmen, yes*, gilt der Modifikator nur auf das Schreiben s. Es wird 'ye', 'yes', 'yess' usw.

entsprechen Ist dies nicht klar ist, dann können Sie vielleicht ein wenig auf die Quelle Ihrer Verwirrung erarbeiten.

+0

Ahh das ist jetzt ziemlich klar, danke. –

Verwandte Themen