1
我想单词“查询”,在给定的字符串匹配“的查询解析此查询的管理不应该得到强调,只有这个查询应该得到强调。”多个正则表达式匹配使用负向前查找
使用以下正则表达式:
(query(?!\smanagement)|query(?!\sresolution))
但我无法得到正则表达式只匹配字符串中最后一个单词“查询”。
问候,
阿洛克
我想单词“查询”,在给定的字符串匹配“的查询解析此查询的管理不应该得到强调,只有这个查询应该得到强调。”多个正则表达式匹配使用负向前查找
使用以下正则表达式:
(query(?!\smanagement)|query(?!\sresolution))
但我无法得到正则表达式只匹配字符串中最后一个单词“查询”。
问候,
阿洛克
您(query(?!\smanagement)|query(?!\sresolution))
正则表达式不能只有一个query
匹配,并且所有的3只query
因为你有两个选择匹配:query
不应该遵循的空间和management
和另一替代方案匹配query
,没有跟着一个空格,resolution
。您需要使用一个前视图,这将禁止resolution
和management
。
您可以使用
query(?!\s(?:management|resolution))
见demo
先行(?!\s(?:management|resolution))
将失败与1个空白,随后用要么management
或resolution
之后的query
比赛。
要只匹配整个单词,使用\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())
感谢Wiktor的,完美的作品! –
谢谢Wiktor。我有另一个问题。如果使用您提供的代码在句子中多次出现“查询”这个单词,我该如何获得第一个匹配的单词?我知道我们需要使用“非贪婪”运算符“?”,但不知道该把它放在哪里。 –
使用代码。它的语言是什么? –