2014-12-09 3 views
-2

에있는 장소에서 한 마디는 다음과 같이 어떤 정규식이 있나요 그래서이 정규식과 일치 할 때 이름이 "john"이 아닌 한 true를 반환해야합니다.정규식 문자열

"Heloo my name is abcd, and I like pizza" --> false 
"Hello my name is asdf, and I like pizza" --> true 
"Hello my name is john, and I like pizza" --> false 

최상의 방법으로 정규 표현식을 사용하려면 어떻게해야합니까?

+1

이유의 첫 번째 거짓 – vks

+0

중복 가능성이있다 (HTTP : // stackerflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word) – xeraphim

+0

@vks 문자열이 Hello가 아니기 때문에 2 oos가있는 Heloo입니다 – super

답변

3

시도해보십시오. [? 정규 표현식 단어를 포함하지 않는 문자열을 일치]

/Hello my name is (?!john)[^,]+, and I like pizza/ 
+0

을 제거하면 작동하지만 그 [^,] +는 무엇을 의미합니까? – super

+0

'[^,] +'는 쉼표가 아닌 하나 이상의 문자를 의미합니다. –

+0

@Murplyx -'멋지지만, 그게 [^,] + 뜻입니까? '라는 문자 클래스는 쉼표를 쓰는 사람이 아니라고 말하면서 여러 번 정량화되었습니다. '[^, \ n] +'에 의해 개행을 지나치지 않도록 제한 할 수 있습니다. – sln

0

PCRE 동사를 통해 하나가 (*SKIP)(*F)

Hello my name is john, and I like pizza(*SKIP)(*F)|Hello my name is [^,]+, and I like pizza 

|<----String you don't want----------->|<-VERB--->|<------String you want-----------------> 

DEMO