2016-10-31 5 views
0

JAVA에서 REGEX를 사용하고 있는데 문자열의 앞뒤에 특정 단어가없는 단어가 하나 있는지 확인해야합니다. 2 단어를 제외하는 정규 표현식

나는 정규 표현식 느릅 나무는 후에 단어를 제외 생성 관리 :이 표현으로

.*WORD(?! AFTER).* 

,가 일치하지 않습니다 문자열 "즐 즐 후 즐 즐의 WORD"하지만, 문자열 "즐 즐을 WORD bla bla "가 일치합니다.

이전 단어에도 동일한 동작이 필요합니다. 예를 들어, 문자열 "bla bla bla after bla bla bla"은 일치하지 않아야하지만 "bla bla WORD bla bla"문자열은 일치해야합니다. 표현식이 오류를 제공하지 않습니다

.*(?!BEFORE)WORD(?! AFTER).* 

있지만, 그것은 예상되는 행동을하지 않습니다

나는이 시도. 대신 첫 번째 표현식과 정확히 동일하게 작동합니다 ((?! BEFORE) 제외). 어떤 아이디어라도 감사 할 것입니다.

+0

을 그것이 안 뭔가를 일치되어 일치하지? 무엇인가해야합니까? 구체적인 예를 들어주세요. –

+0

@MarkAdelsberger 맞습니다. 질문을 편집했습니다. 감사합니다.) –

+0

나는 아직도 뭔가 명확하지 않다. "bla BEFORE WORD bla"문자열이 일치해야합니까? "bla WORD after bla"는 어때? –

답변

3

이 (부정 lookbehind (클래스 Pattern)에 대한 Java API documentation를 참조하십시오 :. 당신은, 당신은 더 구체적으로 할 필요 "가 작동하지 않습니다"말할 때

.*(?<!BEFORE)WORD(?! AFTER).* 
+0

제대로 작동합니다. 나는 많은 것을 시도했지만 부정적인 lookbehind를 보지 못했습니다. 정말 고맙습니다! –

+0

나는 위의 모든 예제를 사용하여 Sublime 텍스트에서 이것을 테스트했으며 잘 작동한다. – Bob

관련 문제