我试着编写一个看似可行的正则表达式,但我不得不用字模式替换一些文字字符串,我想了解原因。
以下是示例:
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
答案 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]+)")
^