Python 匹配排除项的正则表达式负查找
我很难理解这个表达:Python 匹配排除项的正则表达式负查找,python,regex,Python,Regex,我很难理解这个表达: /((?<!=0)x2)/ /(? 在尝试匹配“0x2-2x=1”字符串上的“x2”时 目标是查看“x2”的后面,检查它是否为“0”,然后避免选择它。 如果它只是“x2”,那么我希望选择它(例如字符串“x2-3x=4”) 我用正向/负向前瞻/后向两种方法进行了尝试,它始终与零(0)相匹配 有人能解释一下为什么会发生这种情况吗 我正在使用来测试它(选择Python选项) 当我假设: ?<!= ? 表示如果以下符号位于实际匹配exp之前,则需要排除它们 如果它只
/((?<!=0)x2)/
/(?
在尝试匹配“0x2-2x=1”字符串上的“x2”时
目标是查看“x2”的后面,检查它是否为“0”,然后避免选择它。
如果它只是“x2”,那么我希望选择它(例如字符串“x2-3x=4”)
我用正向/负向前瞻/后向两种方法进行了尝试,它始终与零(0)相匹配
有人能解释一下为什么会发生这种情况吗
我正在使用来测试它(选择Python选项)
当我假设:
?<!=
?
表示如果以下符号位于实际匹配exp之前,则需要排除它们
如果它只是“x2”,那么我希望它被选中
如果x2
被认为是一个单独的子字符串,则使用以下正则表达式模式:
(?!<0)\b(x2)
(?!您很接近;但是,在Python中,反向查找只是?,没有=
:
import re
s = "0x2 - 2x = 1"
if re.findall("(?<!0)x2", s):
print("no zero as a coefficient")
else:
print('found zero as coefficient')
重新导入
s=“0x2-2x=1”
如果re.findall((?这里使用的格式是javascript格式,而不是python格式,则不需要前导/尾随/
/((?<!=0)x2)/
/(?
我们可以
((?<!=0)x2)
(?
理解环顾四周
Positive Negative
Look ahead (?= (?!
Look Behind (?<= (?<!
正负
向前看(?=(?)?!
向后看(?)?
所以我们开始
((?<!0)x2)
(?
此外,还有一些冗余的around(),您需要它在一个完整匹配中分离组,所以要简化它
(?<!0)x2
(?
工作演示。尝试/(?哦,哇,它快让我发疯了…在网络上的每个地方,lookback都有一个相等的,谢谢,伙计,这个分组是我当前目标所必需的,所以它是有意的,无论如何,我会在几分钟内接受你的答案:)