문제

Java에서 유니 코드 텍스트에 대한 정규 표현식을 작성하고 있습니다. 그러나 내가 사용하고있는 특정 스크립트의 경우 Devanagari (0900-097f) 단어 경계에 문제가 있습니다. b는 공간 문자처럼 취급 될 때 의존적 모음 (093E-094C와 같은)의 문자와 일치합니다.

예 : 내가 문자열을 가지고 있다고 가정합니다. 마지막 단어에서도 마찬가지입니다. 이것은 b가 'कम कम ल'의 'ल'와 일치하게하여 언어에 따라 정확하지 않은 정규 표현식 b w b와 일치하게됩니다.

그 예가 도움이되기를 바랍니다.

특정 숯과 일치하지 않는 것을 제외하고 b와 같은 행동을하는 정규 표현을 쓸 수 있습니까? 모든 피드백은 감사 할 것입니다.

도움이 되었습니까?

해결책

다음 Regex 연산자와 함께 원하는 것을 달성 할 수 있어야합니다.

(?=X)   X, via zero-width positive lookahead
(?!X)   X, via zero-width negative lookahead
(?<=X)  X, via zero-width positive lookbehind
(?<!X)  X, via zero-width negative lookbehind

(위는 다음으로 인용됩니다 Java 6 패턴 API 문서.)

사용 (?<![foo])(?=[foo]) 대신에 \b 한마디 전에 (?<=[foo])(?![foo]) 대신에 \b 한 단어 후에 "어디에"[foo]""단어 문자 "세트입니다.

다른 팁

단어 경계와 동일합니다 (경계가 당신이 기대했던 것이 아닌 경우)는 다음과 같습니다.

 (?<!=[x-y])(<?=[x-y])...(?<=[x-y])(?![x-y])

"단어 경계"는 "한쪽에는 캐릭터가 있고 다른쪽에는 아닌 위치를 의미하기 때문입니다).

따라서 외모와 외관 표현식을 사용하면 "Word 경계"를 분리하려는시기를 확인하기 위해 자신의 문자 클래스 [XY]를 정의 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top