2015-12-21 7 views
1

Я хотел бы, чтобы соответствовать только полное слово, но если завернутые в кавычкиRegex матч только полное слово, но если завернутые в кавычки

, например: word

но не: "word"

Первая могут быть сопоставлены с /\bword\b/

Для второго это ближайший я получил, проблема в том, что предотвращает матчи от "wordword" и "word", я только хочу, чтобы не соответствовать, если это "word"

(?!")\bword\b(?!") 
+0

несколько иной подход будет соответствовать слово с произвольными символами с обеих сторон, а затем проверить котировки в коде. Преимущество в том, что вы помните, что он делает через полгода, когда вы не читаете дьявольски умное, но непонятное регулярное выражение. – pvg

ответ

1

Вы можете использовать это регулярное выражение в PHP:

"\w+"(*SKIP)(*F)|\b\w+\b 

Это будет терпеть неудачу каждый "word" используя (*SKIP)(*F) директивы и будет соответствовать каждое слово иначе.

RegEx Demo

+1

Это более понятно. – Andrew

2
\b(\w+(?!")|(?<!")\w+)\b 

See it in action

Идея заключается в том, чтобы соответствовать слово, если оно не сопровождается или предшествует " (с использованием negative lookarounds) , а не два в то же время.

+1

Объяснение может помочь –

+1

Это умный, приятный. – Andrew

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