Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 匹配排除项的正则表达式负查找_Python_Regex - Fatal编程技术网

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都有一个相等的,谢谢,伙计,这个分组是我当前目标所必需的,所以它是有意的,无论如何,我会在几分钟内接受你的答案:)