Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich vom Benutzer bereitgestellte Zeichenfolgen sicher als Regex-Muster in Python verwenden?

Wie kann ich vom Benutzer bereitgestellte Zeichenfolgen sicher als Regex-Muster in Python verwenden?

Mary-Kate Olsen
Freigeben: 2024-12-31 00:57:11
Original
806 Leute haben es durchsucht

How Can I Safely Use User-Supplied Strings as Regex Patterns in Python?

Escape von Regex-Zeichen in vom Benutzer bereitgestellten Mustern

Bei der Verwendung von Benutzereingaben als Muster für reguläre Ausdrücke ist es wichtig, das Problem der Zeichen anzugehen, die besitzen innerhalb der Regex-Syntax besondere Bedeutungen. Beispielsweise wird die Absicht des Benutzers, nach „Wort(en)“ zu suchen, von der Regex-Engine aufgrund der Klammern fälschlicherweise als Gruppe interpretiert. Um dies zu verhindern, müssen wir die Klammern als Literalzeichenfolgen und nicht als Regex-Symbole behandeln.

Konventioneller Ansatz: Manuelle Ersetzung

Eine Methode, diese Zeichen zu maskieren, besteht darin, sie manuell zu maskieren Ersetzen Sie jede Instanz durch ihre maskierte Version. Beispielsweise könnten wir „(s)“ durch „(s)“ ersetzen. Dies erfordert jedoch die Berücksichtigung aller möglichen Regex-Symbole, was mühsam sein kann.

Eine bessere Lösung: re.escape-Funktion

Eine effizientere Lösung ist die Verwendung von Pythons re .escape()-Funktion, die nicht-alphanumerische Zeichen in einer Zeichenfolge automatisch maskiert. Dadurch können wir spezielle Regex-Zeichen als Literalzeichenfolgen behandeln.

Um beispielsweise nach einer beliebigen Instanz von „Wort(en)“ in einem Text zu suchen, können wir Folgendes verwenden:

def simplistic_plural(word, text):
    word_or_plural = re.escape(word) + 's?'
    return re.match(word_or_plural, text)
Nach dem Login kopieren

Diese Funktion gibt ein Übereinstimmungsobjekt zurück, wenn das Muster im Text gefunden wird.

Das obige ist der detaillierte Inhalt vonWie kann ich vom Benutzer bereitgestellte Zeichenfolgen sicher als Regex-Muster in Python verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage