2016-02-22 2 views
1

Я пытаюсь соответствовать слово «запрос» в данной строке «Разрешающая запроса с этим запросом управления не должны получить подсвечивается. Только этот запрос должен получить подсвечивается.»Multiple Regex Матчи Использование отрицательного предпросмотра

с использованием следующее регулярное выражение:

(query(?!\smanagement)|query(?!\sresolution)) 

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

С уважением,

ALOK

ответ

2

Вы (query(?!\smanagement)|query(?!\sresolution)) регулярное выражение не совпадает только один query и соответствует всем 3 query потому, что у вас есть два варианта: query, которые не должны следовать с пространством и management и другое альтернативное соответствие query, за которым не следует пробел и resolution. Вам нужно использовать один lookahead, который запретит и resolution И management.

Вы можете использовать

query(?!\s(?:management|resolution)) 

См demo

В предпросмотре (?!\s(?:management|resolution)) провалит матч query, что следует с 1 пробелом следует с обеими management или resolution.

Чтобы соответствовать только целые слова, используйте \b:

\bquery\b(?!\s\b(?:management|resolution)\b) 

Python demo показывает, как вы можете получить первый матч в строке с этим регулярным выражением с re.search:

import re 
p = re.compile(r'query(?!\s*(?:management|resolution))') 
test_str = "The query resolution with this query management should not get highlighted. Only this query should get highlighted.The query resolution with this query management should not get highlighted. Only this query should get highlighted." 
m = p.search(test_str) 
if m: 
    print(m.group()) 
+0

Спасибо Wiktor, что отлично работает ! –

+0

Спасибо Wiktor. У меня был другой вопрос. Как получить только первое совпадение слова «запрос», если оно встречается несколько раз в предложении, используя предоставленный вами код? Я знаю, что нам нужно использовать «неживого» оператора «?», Но не уверен, куда его поместить. –

+0

Использование кода. Для чего это язык? –

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