Heim > Backend-Entwicklung > Python-Tutorial > Wie können reguläre Ausdrücke ganze Wörter in Zeichenfolgen effizient abgleichen?

Wie können reguläre Ausdrücke ganze Wörter in Zeichenfolgen effizient abgleichen?

Barbara Streisand
Freigeben: 2024-11-19 03:53:02
Original
698 Leute haben es durchsucht

How Can Regular Expressions Efficiently Match Whole Words in Strings?

Dynamisches Zuordnen ganzer Wörter in Zeichenfolgen mithilfe regulärer Ausdrücke

Um festzustellen, ob ein Wort in einem Satz vorhanden ist, können reguläre Ausdrücke verwendet werden. Da Wörter üblicherweise durch Leerzeichen getrennt werden, aber auf beiden Seiten Satzzeichen enthalten können, ist es wichtig, teilweise Wortübereinstimmungen zu verhindern.

Ein Ansatz besteht darin, separate Regex-Muster für Wörter zu definieren, die in der Mitte, am Anfang und am Ende von Wörtern erscheinen die Zeichenfolge wie folgt:

match_middle_words = " [^a-zA-Z\d ]{0,}" + word + "[^a-zA-Z\d ]{0,} "
match_starting_word = "^[^a-zA-Z\d]{0,}" + word + "[^a-zA-Z\d ]{0,} "
match_end_word = " [^a-zA-Z\d ]{0,}" + word + "[^a-zA-Z\d]{0,}$"
Nach dem Login kopieren

Dies erfordert jedoch die Definition und Kombination mehrerer Regex-Muster. Ein einfacherer Ansatz besteht darin, Wortgrenzen zu nutzen (b):

match_string = r'\b' + word + r'\b'
Nach dem Login kopieren

Dieses Muster stellt sicher, dass das Wort nur erfasst wird, wenn es von Nicht-Wort-Zeichen umgeben ist. Für eine Liste von Wörtern (z. B. in der Variablen „Wörter“) verwenden Sie:

match_string = r'\b(?:{})\b'.format('|'.join(words))
Nach dem Login kopieren

Diese Methode stellt effektiv die Erfassung ganzer Wörter sicher, ohne dass mehrere Muster erforderlich sind.

Hinweis zu Wortgrenzen

Für komplexere Szenarien mit Wörtern mit Sonderzeichen oder bei denen sich Wortgrenzen von Leerzeichen unterscheiden, können alternative Grenzdefinitionen verwendet werden. Eindeutige Wortgrenzen schließen Wörter aus, die mit Sonderzeichen beginnen/enden:

match_string = r'(?<!\w){}(?!\w)'.format(re.escape(word))
Nach dem Login kopieren

Leerzeichengrenzen berücksichtigen Leerzeichen und Zeichenfolgenanfang/-ende als Wortgrenzen:

match_string = r'(?<!\S){}(?!\S)'.format(word)
Nach dem Login kopieren

Durch die Verwendung dieser Techniken erfolgt der Abgleich Ganze Wörter in Zeichenfolgen können vereinfacht werden, um genaue und konsistente Ergebnisse zu gewährleisten.

Das obige ist der detaillierte Inhalt vonWie können reguläre Ausdrücke ganze Wörter in Zeichenfolgen effizient abgleichen?. 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