为什么我的正则表达式适用于pythex而不适用于python?

时间:2017-04-12 12:03:02

标签: python regex python-2.x

我测试了以下正则表达式:

r"([\d\s]{1,})\b(\s?[€]\s?)([\d]{1,})"
http://pythex.org上的

实际上有效。该模式用于识别价格,其中包含欧元符号,如40€50

见此截图:

enter image description here

然后在python中,我测试它是这样的:

regex3 = r"([\d\s]{1,})\b(\s?[€]\s?)([\d]{1,})"

line = "37€00"

pct_re = re.compile(regex3)
print(pct_re.search(line))

并打印None。至于这种模式:r"([\d\s]{1,},?[\d]{1,}?)\b(\s?[€])",Iit适用于Pythex和python。 (这个正则表达式确认价格为37.50欧元,最后是欧元符号)。它实际上打印的类似“匹配+对象引用”但不是“无”!!

我在stackoverflow上看到过类似的线程,人们建议使用re.search代替re.match,因为匹配只在开头匹配,这就是我所做的。

我确定这里的错误是愚蠢的,但如果你能提供一些帮助,请。

1 个答案:

答案 0 :(得分:0)

我不知道为什么你需要使用compile;这很好用:

regex3 = r"([\d\s]{1,})\b(\s?[€]\s?)([\d]{1,})"

line = "37€00"

print re.search(regex3, line)

返回<_sre.SRE_Match object>。在使用之前无需compile正则表达式。