2016-08-12 2 views
-1
Edit the Expression & Text to see matches. 

Expression sample 

Это текстовый документ, который имеет две строки. Я хочу найти слово «Expression» таким образом, чтобы оно не соответствовало слову «match». Таким образом, выход будет соответствовать строке «Пример выражения». Пожалуйста, помогите создать регулярное выражение для этого. Я попытался использовать следующее регулярное выражение, но это не работает. Большое спасибоРегулярное выражение с отрицательным взглядом не работает

^(.*)Expression(.*)(?!matches)$ 
+1

Используйте '/ Expression (?!. * Matches) /' – anubhava

+1

Спасибо. Он работает –

+1

Похоже, вы хотите совместить строки с словом 'Expression', но без' match'. Попробуйте '/^(?!. * \ Bmatches \ b). * \ BExpression \ b. */Gm' –

ответ

1
/Expression(?!.*matches)/ 

ответ. Спасибо anubhava за помощь мне.

2

В вашем же регулярное выражение будет соответствовать следующее:

Edit the Expression & Text to see matches. 
^(.* )Expression(.*     )(?!matches)$ 

Как вы можете видеть, второй .* имеет потребляет остальную часть строки, таким образом означая опережения не будет соответствовать (потому что больше нет символов), а также привязки конца строки.

кодифицировать требование matches не может появиться в любом месте после Expression вам нужно использовать

Expression(?!.*matches) 

вместо этого. Необязательно с (.*) pre-and postfixed, если вы отчаянно нуждаетесь в них. Это регулярное выражение по существу означает, что Expressionдолжен соответствовать где-то, в то время как все подвыражение .*matchesне должно матч после матча Expression. Поскольку это подвыражение включает в себя .*, оно будет пытаться сопоставить matches в любом месте, и если оно совпадает даже один раз, то lookahead терпит неудачу.