为什么Python正则表达式与文字不匹配,但\ w +呢?

时间:2014-04-10 18:26:31

标签: python regex typography

我试着编写一个看似可行的正则表达式,但我不得不用字模式替换一些文字字符串,我想了解原因。

以下是示例:

import re

text = "   1    p2       2.26347691E+12    optvl    9.05369210E+04    ctha     6.00000000E+01"

p1 = re.compile(r"\s+(\d+)\s+p2\s+([\d\.\+\-E]+)\s+optv1\s+([\d\.\+\-E]+)\s+ctha\s+([\d\.\+\-E]+)")
m1 = p1.findall(text)
print m1

p2 = re.compile(r"\s+(\d+)\s+p2\s+([\d\.\+\-E]+)\s+\w+\s+([\d\.\+\-E]+)\s+\w+\s+([\d\.\+\-E]+)")
m2 = p2.findall(text)
print m2

这是输出:

[]
[('1', '2.26347691E+12', '9.05369210E+04', '6.00000000E+01')]

感谢您的任何见解!

编辑:是的,这是一个错字 - 旧l vs 1

1 个答案:

答案 0 :(得分:3)

第一个版本中有一个拼写错误,应该是l而不是1

p1 = re.compile(r"\s+(\d+)\s+p2\s+([\d\.\+\-E]+)\s+optvl\s+([\d\.\+\-E]+)\s+ctha\s+([\d\.\+\-E]+)")
                                                       ^