2013-07-20 3 views
8

다음 정규 표현식을 사용하여 '+'로 시작하는 텍스트의 모든 단어를 찾습니다. 이 잘 작동하고 "+Foo""+Bar""+Foo or +Bar" 일치정규식에서 이스케이프 된 문자를 무시하는 방법?

Pattern.compile("\\+[\\w-]+"); 

.

이스케이프 처리 된 '+'문자로 시작하는 단어를 무시하도록 정규식을 확장하려면 어떻게해야합니까?

"+Foo or +Bar but no \\+Hello"

"+Hello""+Foo""+Bar" 하지만에 일치해야합니다.

(이것은 JDK1.7를 위해 작동합니다.)

감사합니다 사전에 어떤 도움을!

답변

13

당신은 negative lookbehind 시도 할 수 있습니다.

+2

감사합니다. 그게 효과가있어! – t777

+0

@ t777 아무 문제 없어, 기꺼이 도와 드리겠습니다. – arshajii

4

당신은 부정적인 모습 숨김 사용할 수 있습니다

(?<!\\(\\{2})*)\+[\w-]+ 

는 일반적으로 (?<!Y)XY가 선행되지 않는 X 일치 :

Pattern.compile("(?<!\\\\)\\+[\\w-]+"); 
+1

감사합니다. 그러나 작동하지 않습니다. 백 슬래시가 많이있을 수 있습니까? ;) – t777

+0

@ t777. 네. 방금 4 개의 백 슬래시가 필요합니다. –

관련 문제