Heim >Java >javaLernprogramm >Wie behandelt man Unicode-Zeichen in regulären Java-Ausdrücken mithilfe von \w- und \b-Äquivalenten?

Wie behandelt man Unicode-Zeichen in regulären Java-Ausdrücken mithilfe von \w- und \b-Äquivalenten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-11 08:42:10207Durchsuche

How to Handle Unicode Characters in Java Regular Expressions Using w and b Equivalents?

Unicode-Äquivalente für w und b in regulären Java-Ausdrücken?

Java-Implementierung von Zeichenklassenverknüpfungen im Perl-Stil (w, b, s usw.) ist auf ASCII-Zeichen beschränkt. Um Unicode-Zeichen korrekt zuzuordnen, benötigen Sie eine bessere Möglichkeit, diese Verknüpfungen neu zu schreiben.

Lösung:

Verwenden Sie eine benutzerdefinierte Funktion, um die folgenden Zeichenklassen-Escapezeichen neu zu schreiben:

\w \W \s \S \v \V \h \H \d \D \b \B \X \R

Umgeschrieben Definitionen:

\s => [^\u0009-\u000D\u0020\u0085\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]
\S => [^\u0009-\u000D\u0020\u0085\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]

\v => [\u000A-\u000D\u0085\u2028\u2029]
\V => [^\u000A-\u000D\u0085\u2028\u2029]

\h => [\u0009\u0020\u00A0\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]
\H => [^\u0009\u0020\u00A0\u1680\u180E\u2000\u2001-\u200A\u202F\u205F\u3000]

\w => [\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&&\p{So}]]
\W => [^\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics}&&\p{So}]]

\b => (?:(?<=[a-z0-9])(?![a-z0-9])|(?<![a-z0-9])(?=[a-z0-9]))
\B => (?:(?<=[a-z0-9])(?=[a-z0-9])|(?<![a-z0-9])(?![a-z0-9]))

\d => \p{Nd}
\D => \P{Nd}

\R => (?:(?>\u000D\u000A)|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029])

\X => (?>\PM\pM*)

Grenzüberlegungen:

Java's b und B sind nicht ausschließlich an w gebunden. Ein umgeschriebenes b unter Verwendung der A(?:AB|BC)-Konstruktion kann nach Grenzen suchen, bei denen:

  • IF folgt dem Wort ==> THEN steht nicht vor dem Wort
  • ELSIF folgt nicht dem Wort ==> THEN steht vor dem Wort

Ein umgeschriebenes B mit der A(?:BC|AB)-Konstruktion kann nach Nichtgrenzen suchen, wobei:

  • IF folgt dem Wort ==> THEN steht vor dem Wort
  • ELSIF folgt nicht dem Wort ==> THEN steht nicht vor dem Wort

Vollständige Umschreibungsfunktion:

Besorgen Sie sich den Quellcode, um die oben erwähnte vollständige Umschreibungsfunktion zu erhalten.

Zusätzliche Funktionen:

  • Eingabe von Unicode-Zeichen in logischen Code Punkte
  • Komfortable Definitionen für Wörter, Bindestriche, Bindestriche und Apostrophe in natürlicher Sprache
  • Erweiterung von Regex-Escapezeichen und Aufhebung der Escapezeichen bei String-Escapezeichen

Das obige ist der detaillierte Inhalt vonWie behandelt man Unicode-Zeichen in regulären Java-Ausdrücken mithilfe von \w- und \b-Äquivalenten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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