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:
Ein umgeschriebenes B mit der A(?:BC|AB)-Konstruktion kann nach Nichtgrenzen suchen, wobei:
Vollständige Umschreibungsfunktion:
Besorgen Sie sich den Quellcode, um die oben erwähnte vollständige Umschreibungsfunktion zu erhalten.
Zusätzliche Funktionen:
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!