Brauche Rat zu RegEx

Brauche Rat zu RegEx

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 plund playalle playermit beginnen pl, wird nur pl(als erste Alternative) abgeglichen. playund playerwerden nicht berücksichtigt.

Ihr regulärer Ausdruck sollte sein: (player|play|pl).

In diesem Fall werden die Wörter playerzuerst mit geprüft/verglichen, dann mit playwenn playernicht gefunden wurde und anschließend mit plwenn 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.

verwandte Informationen