Regex beschränken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

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?
Benutzeravatar
__blackjack__
User
Beiträge: 14076
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten