Seite 1 von 1

Regex beschränken

Verfasst: Montag 17. Oktober 2022, 19:45
von Fire Spike
Hallo Leute

Ich möchte gerne mit Hilfe von einem Regex einen String überprüfen.

Code: Alles auswählen

print(re.match("apfel(kuchen|torte)", "apfelkuchen"))
Da der Regex vom Benutzer eingegeben kann möchte ich ihn beschränken.
Man sollte z.B. nur noch "*" "() und "[]" verwenden dürfen.
Wie kann ich das am besten umsetzen?

Re: Regex beschränken

Verfasst: Montag 17. Oktober 2022, 19:54
von __blackjack__
Erstmal der Hinweis das `match()` vielleicht nicht die gesuchte Methode ist:

Code: Alles auswählen

In [26]: print(re.match("apfel(kuchen|torte)", "apfelkuchenblech"))
<re.Match object; span=(0, 11), match='apfelkuchen'>

In [27]: print(re.match("apfel(kuchen|torte)", "bratapfelkuchen"))
None
Das kann natürlich so gewollt sein, aber vielleicht sollte es ja `fullmatch()` oder `search()` sein.

Ansonsten ist die Frage was die Einschränkung konkret bedeuten soll. Wenn man nur "*", "(", ")", "[", und "]" verwenden darf, dann ist "a" da ja auch nicht enthalten. Sollen Leerzeichen erlaubt sein? Was ist mit "\" um eines der Sonderzeichen zu entwerten? Und warum willst Du das überhaupt einschränken?