Ich zerbreche mir den Kopf über ein Problem, aber ich kann keine richtige Lösung finden. Das Problem: Schreiben Sie einen regulären Ausdruck, der alle Vorkommen unterschiedlicher Zeichen oder Wörter im Text abgleicht. Die Textreihenfolge sollte genau diese sein:
pl spiel Spieler
ich habe es versucht
(pl|spielen|spieler)
aber aus irgendeinem Grund wird in allen Wörtern nur „pl“ ausgewählt. Weiß also jemand, warum das so ist und ob es möglich ist, dies nur mit regulären Ausdrücken zu tun?
Link zuregex101
Jede Hilfe wird geschätzt.
Antwort1
Wenn Sie nach Alternativen suchen, beginnen Sie mit dem längsten Wort und gehen Sie zum kürzesten über, wenn diese gemeinsame Zeichen haben/mit diesen beginnen. Da pl
und play
alle player
mit beginnen pl
, wird nur pl
(als erste Alternative) abgeglichen. play
und player
werden nicht berücksichtigt.
Ihr regulärer Ausdruck sollte sein: (player|play|pl)
.
In diesem Fall werden die Wörter player
zuerst mit geprüft/verglichen, dann mit play
wenn player
nicht gefunden wurde und anschließend mit pl
wenn die anderen beiden Wörter nicht gefunden wurden.
Antwort2
Sie müssen eine gierige Übereinstimmung angeben, also fügen Sie .*
am Ende Ihres regulären Ausdrucks Folgendes hinzu:
(pl|play|player).*
Bei der Verwendung von „Greedy Matches“ müssen Sie vorsichtig sein, da es passieren kann, dass Sie mehr Matches erhalten, als Sie möchten.