2009-10-08 4 views
0

정규식 패턴을 검사 할 문자열이 있습니다.Regex는 2 단어 사이의 모든 것을 무시합니다.

apple(?!(?not)).*?inc(\.|luded)? 

문자열 1 : 다음은 정규 표현식은 "바나나가 포함되지 썩은 사과"- 내가 원하는 어느 날 경기를 포기하지 않습니다.

문자열 2 : "바나나, 썩은 사과가 포함 된"- 나는

원하는 어떤 경기를 생산하지만 캐릭터처럼 ...

"바나나, 썩은 사과, 잘 익은 아보카도를하지 않은 경우 포함 된 "또는 "바나나, 썩은 사과와 살구는 포함되어 있지 않습니다 "둘 다 내가 원하지 않는 경기를 만듭니다.

그래서 기본적으로 "apple"과 "included"(또는 "inc"또는 "inc.")가 문자열에 포함되어 있고 "include"앞에 "NO"가없고 그 사이에있는 모든 항목이 모두 무시되는지 확인하고 싶습니다. .

감사합니다.

답변

2

방법에 대해 :

apple.*(?<!\snot)\s+inc(\.|luded) 
+0

우수! Tim에게 감사드립니다! – Jaime

1

"사과"직후에 "not"가 나타나지 않는지 확인하는 부정적인 선행 표시를 사용하고 있습니다. 그러나 내가 올바르게 당신을 이해한다면, 당신이 원하는 것은 "inc"가 즉시 "012"가 아닌 ""이 앞에 오는 지 확인하는 것입니다. 다음과 같은 부정적인 lookbehind 주장을 사용할 수 있습니다

apple.*(?<!(\bnot))inc(\.|luded)? 
+0

감사 필 ... 팀은 분으로 너무 그것을 이길. :) – Jaime

+0

다른 방법으로, 실제로. 필 필자는 필자를 40 초나 이겼다. 그리고 그는 더 많은 것을 타이핑했다. –

관련 문제