2014-12-09 2 views
-2

Есть ли регулярное выражение как это:Regex - Ни слова в месте, в строке

«/ Здравствуйте, меня зовут [все, что не„джон“], и мне нравится пицца /»

Поэтому, когда я сопоставляюсь с этим регулярным выражением, он должен возвращать true, если место, где имя не является «john».

"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: // stackoverflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word) – xeraphim

+0

@vks Поскольку строка не Hello, это Heloo с 2 oos – super

ответ

3

Попробуйте это. [? Регулярное выражение для строки, не содержащие слово]

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

Прохладный, но что это означает [^,] +? – super

+0

'[^,] +' означает один или несколько символов, которые не являются запятой. –

+0

@Murplyx - 'Прохладный, но что это значит [^,] +? Его класс символов, говорит не запятая, умножается на 1 на много раз. Вы можете ограничить его, чтобы он не проходил мимо новой строки с помощью '[^, \ 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

Смежные вопросы