> Java > java지도 시간 > 정규식에서 Java의 \w 및 \b에 해당하는 유니코드 인식 항목은 무엇입니까?

정규식에서 Java의 \w 및 \b에 해당하는 유니코드 인식 항목은 무엇입니까?

DDD
풀어 주다: 2024-12-13 14:55:14
원래의
496명이 탐색했습니다.

What are the Unicode-aware equivalents for Java's w and b in regular expressions?

Java 정규 표현식에서 w와 b에 해당하는 유니코드는 무엇입니까?

Java 정규 표현식은 다른 정규 표현식에 비해 문자 클래스 약어(w 및 b)가 제한되어 있습니다. 최신 정규식 구현. Java에서 w는 [A-Za-z0-9_]만 일치하므로 단어 일치 기능이 제한됩니다. 또한 b의 단어 경계 의미 체계는 w와 유니코드의 정의에서 벗어납니다.

유니코드 인식 등가물

다행히도 이러한 제한을 극복하기 위해 사용자 정의 유니코드 인식 등가물이 개발되었습니다. . 대체 항목은 다음과 같습니다.

\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-\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: (?:(?<=[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics">&amp;&amp;\p{So}]])(?![\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics">&amp;&amp;\p{So}]])|(?<![\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics">&amp;&amp;\p{So}]])(?=[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics">&amp;&amp;\p{So}]]))
\B: (?:(?<=[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics">&amp;&amp;\p{So}]])(?=[\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics">&amp;&amp;\p{So}]])|(?<![\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics">&amp;&amp;\p{So}]])(?![\pL\pM\p{Nd}\p{Nl}\p{Pc}[\p{InEnclosedAlphanumerics">&amp;&amp;\p{So}]]))

\d: \p{Nd}
\D: \P{Nd}

\R: (?:(?>\u000D\u000A)|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029])
\X: (?>\PM\pM*)
로그인 후 복사

경계 이해(b 및 B)

경계는 단어 문자가 비단어 문자로 전환되거나 그 반대로 전환되는 위치와 일치합니다. 경계는 다음과 같이 정의됩니다.

IF follows word
THEN doesn't precede word
ELSIF doesn't follow word
THEN does precede word
로그인 후 복사

정규식 구문으로 변환:

(?:(?<=\w)(?!\w)|(?<!\w)(?=\w))
로그인 후 복사

마찬가지로 경계가 없는(B) 해당 항목은 다음과 같습니다.

(?:(?<=\w)(?=\w)|(?<!\w)(?!\w))
로그인 후 복사

Java에 유니코드 지원 통합

To 이러한 유니코드 동등 항목을 Java 정규식에 통합하면 문자열 재작성 기능을 사용하여 컴파일 전에 패턴을 변환할 수 있습니다. 다음은 rewrite라는 사용자 정의 함수를 사용하는 예입니다.

String rewrittenPattern = rewrite(originalPattern);
Pattern compiledPattern = Pattern.compile(rewrittenPattern);
로그인 후 복사

위 내용은 정규식에서 Java의 \w 및 \b에 해당하는 유니코드 인식 항목은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿