正则表达式"减法"方程



我想匹配一个有效的"减法";'z'字符的未知数(非零)方程。

有效字符串示例:"zz -z=zz"或"zzzz-zzz = z"

无效字符串示例:"z-zz=z"或"zzz-z = z"或"z-zz = -z"

我试过这样的东西,但它不起作用。我相信这和某种反向引用有关?

re.match(r'(z+)-(z+)=(?!2)1', s)

任何帮助都将是非常感激的。

这很简单,不要想太多。

只需将第一个zs分成两部分,并将接下来的两个CC_2 s与方程匹配:

^(z+)(z+)-1=2$

检查校样

匹配前两个字符串("zzz-z=zz"或"zzzz-zzz=z"),而不匹配后三个("z-zz=z"或"zzz-z = z"或"z-zz = -z")。

(z{2,})-(z{1})=(z{2})|(z{2,})-(z{3})=(z{1})

|是一个或操作符,所以它之前的所有内容都匹配"zz -z=zz"之后的所有内容都匹配"zzzz-zzz=z">

花括号在指定匹配前一个字符的次数范围时很有帮助。

如果存在其他有效的字符串示例,则可能需要调整。

最新更新