> Java > java지도 시간 > \w 및 \b에 대한 Java 정규식의 유니코드 지원을 어떻게 향상시킬 수 있습니까?

\w 및 \b에 대한 Java 정규식의 유니코드 지원을 어떻게 향상시킬 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-10 11:03:13
원래의
188명이 탐색했습니다.

How Can I Improve Unicode Support in Java Regular Expressions for w and b?

Java 정규 표현식의 w 및 b에 해당하는 유니코드

Java의 정규식 구현은 유니코드에 대한 지원이 제한되어 있으므로 단어 또는 일치 항목을 일치시키기가 어렵습니다. 단어 경계를 정확하게 지정합니다. 기본 w 및 b 이스케이프는 ASCII 문자에만 해당합니다.

이 문제를 해결하려면 이러한 이스케이프를 다시 작성하고 유니코드 인식 정의로 바꾸는 함수를 사용하는 것이 좋습니다. 이 함수는 다음 14개의 문자 클래스 이스케이프를 다시 작성할 수 있습니다.

\w \W \s \S \v \V \h \H \d \D \b \B \X \R
로그인 후 복사

다시 작성된 이스케이프 정의:

  • w: 문자, 숫자 및 특정 구두점 문자를 캡처합니다. (p{L}pMp{Nd}p{Nl}p{Pc}[p{InEnclosedAlphanumerics}&&p;p{So}]])
  • W: w와 일치하는 모든 문자를 제외합니다
  • s: 유니코드 공백과 일치 ([u0009-u000Du0020u0085u00A0u1680u180Eu2000-u200Au2028u2029u202Fu205Fu3000])
  • S: s
  • 와 일치하는 모든 문자 제외 v: 유니코드 수직과 일치 공백 ([u000A-u000Du0085u2028u2029])
  • V: v와 일치하는 모든 문자를 제외
  • h: 유니코드 가로 공백과 일치 ([u0009u0020u00A0u1680u180Eu2000-u200Au202Fu205Fu3000])
  • H: h와 일치하는 모든 문자 제외
  • d: 유니코드 숫자와 일치 (p{Nd})
  • D: d와 일치하는 모든 문자 제외
  • b: 유니코드 단어 문자만 고려하여 단어 경계와 일치
  • B: 단어 이외의 경계와 일치 유니코드 단어 문자
  • X: 확장 문자소 클러스터와 일치
  • R: 줄과 일치 유니코드 줄 바꿈을 포함한 나누기

경계 정의:

경계 이스케이프(b 및 B)는 다음 논리를 사용하여 다시 작성할 수 있습니다.

  • ㄴ: (?:(?<=w)(?!w)|(?
  • B: (?:(?<=w)(?= w)|(?

Java 수정 Java:

이 함수는 원래 토론 스레드에 제공된 코드를 사용하여 Java로 구현할 수 있습니다. 이 코드를 사용하면 정규식 패턴을 다시 작성하여 유니코드 문자를 더 잘 처리할 수 있습니다.

참고:
Java 7에서 Pattern 클래스는 UNICODE_CHARACTER_CLASS 플래그를 도입하여 유니코드 문자 지원을 활성화합니다. 이는 기본적으로 이스케이프됩니다.

위 내용은 \w 및 \b에 대한 Java 정규식의 유니코드 지원을 어떻게 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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