我正在尝试匹配给定字符串中的“查询”一词“此查询管理的查询解析不应突出显示。只有此查询才会突出显示。”
使用以下正则表达式:
(query(?!\smanagement)|query(?!\sresolution))
但是我无法让正则表达式只匹配字符串中的最后一个单词“query”。
此致
阿洛克
答案 0 :(得分:2)
(query(?!\smanagement)|query(?!\sresolution))
正则表达式无法仅匹配一个query
并且匹配所有3个query
,因为您有两个选择:query
不应该跟空格和management
以及与query
匹配的另一个备选内容,后面没有空格和resolution
。您需要使用一个不允许同时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())