2016-06-11 1 views
0

나는 예를 들어,이 문장이 있습니다정규식 일치 단어 내가 질문을

"HalloAnna daveca.nn dave anna ca. anna" 

을 그리고 난 단지 싶어 하나 서 "약"을 일치 .

(?i)\b(ca\.)\b 

하지만이 작동하지 않습니다 내가 왜 모르는 :

내 정규식은 같다. 어떤 아이디어?

testSource.replaceAll() 

pattern.matcher(testSource).replaceAll(). 

모두 나던 작업

과 :

// 업데이트

나는 그것을 excecute.

+0

어떻게이 정규식을 자바 코드로 실행합니까? –

답변

1

당신은 다음과 같이 사용한다 : 당신은 자바 탈출을 생략하면 정규식을 제공

Pattern.compile("(?i)\\b(ca\\.)(?=\\W)").matcher(a).replaceAll("SOME TEXT"); 

: (?i)\b(ca\.)\W합니다.

일반 정규식의 모든 \은 java - \\에서 이스케이프되어야합니다.

또한 단어 앞에 단어 경계 (\b)가 있지만 문자가 공백에서 영숫자로 바뀌거나 다른 방향으로 바뀌는 부분의 문자열에만 적용됩니다. 그러나 귀하의 경우 영숫자 문자가 아닌 도트가 있으므로 끝에 \b을 사용할 수 없습니다. \W을 사용하면 단어가 아닌 문자가 점 뒤에 표시됩니다. 그러나 \W을 사용하려면 캡처 그룹에서이를 무시해야합니다 (따라서 대체되지 않습니다) - (?=.

또 다른 문제

당신이 어떤 문자와 일치하는 .을 사용했다고했지만, 실제로 그래서 당신은 그것을 탈출해야 할 일, 실제 점을 일치시킬 - 자바에서 문자열 \\.이되는, \.을.

+0

완벽하게 작동합니다! 그러나 나는 비 단어 경계가 의미하는 것을 이해하지 못합니까? \ b와 \ B의 차이점을 설명해 주시겠습니까? – Montezuma

2

당신은 점을 탈출하고 다음과 같은 비 단어를 주장해야합니다

(?i)\bca\.(?=\W) 

live demo를 참조하십시오.