2015-11-23 4 views
0

Я хотел бы составить регулярное выражение для выделения ключевых слов.Как исключить такой шаблон из регулярного выражения?

Регулярное выражение вроде как

\btap\b. 

И ниже предложений, ожидается, чтобы соответствовать только один «крану» без двойных кавычек. Но на самом деле он также соответствует второму «крану» внутри символа котировки.

tap click "tap" 

Как я могу исключить совпадение второго ключевого слова?

+0

Вы пытаетесь совместить фразы только с _one_ 'tap', или вы ищете регулярное выражение, которое соответствует _first_' tap'? –

+1

Какой язык/инструмент вы используете? – HamZa

+0

Вы можете использовать поисковые запросы, чтобы запретить цитаты вокруг слова: ['(?

ответ

0

Это похоже на работу.

var reg = new RegExp('\\b(tap(?!\"))', 'ig') 

('tap click "tap" tap.').match(reg) 

Правила

  1. Начальное слово

  2. не котировки на конец

  3. к регистру.

Fiddle

+0

Я, наконец, шаблон для моего требования на основе вашего ответа. \ b ((? Chuck

0

Границы слова \b Соответствует любому символу, кроме буквы (так " также).

Вы можете имитировать свои собственные границы слов, где можно включить только то, что, по вашему мнению, уместно.

В примере:

\s|^|\.|!|\?|$ - пространство или начало строки, или точка или восклицательный знак или знак вопроса, или в конце строки

Я также хотел бы предложить использовать отрицательные/-aheads Утверждения назад, но ...

Javascript не поддерживает просмотра назад

Таким образом, вы могли бы использовать некоторые захватив группы, а затем использовать группу, которую вам нужно.

образца регулярное выражение: (?:\s|^|\.|!|\?)(tap)(\s|$|\.|!|\?)

А потом в JavaScript использовать первую группу захвата - match[1].

См. this SO answer, чтобы узнать, как использовать группы захвата в JavaScript.

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