[英]Why isn't this regex working in python? It's valid and works fine on RegExr
我有这个正则表达式,用于将字符串拆分为以后可以处理的标记。 我使用RegExr(在线工具)制作了它,并且在那儿工作正常,但是我无法在python中工作。 我现在正在使用它来打印比赛。
sunit = "A^2.1e2 m/s -180.2"
pat = "[A-Za-z]+(\^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)?|\/|\*|[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"
Terms = re.findall(pat,sunit)
print Terms
正则表达式应匹配:
A^2.1e2
m
/
s
-180.2
解决了。 使用“ re.finditer()”代替“ re.findall()”似乎可行。 这是我现在想出的。 很抱歉打扰您,我早就应该可以解决这个问题的。
sunit = r"A^2.1e2 m/s -180.2"
pat = r"[A-Za-z]+(\^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)?|\/|\*|[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"
Terms = re.finditer(pat,sunit)
for m in Terms:
print m.group(0)
您的正则表达式中有组捕获(...)
。 如果您不想捕获这些组,则只需从中删除括号即可。 或在括号内使用?:
忽略它,例如(?:...)
。 我已经更改了您的正则表达式,它将与re.findall
一起re.findall
pat = "[A-Za-z]+(?:\^[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?)?|\/|\*|[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?"
^^ ^^ ^^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.