浮点python的正则表达式无效

时间:2015-06-26 00:49:47

标签: python regex

我正在使用python 2.7。我正在尝试编写一个可以匹配以下字符串的正则表达式: _targetString =' [6152:2152] * $完成1个工作的总时间:4586.12 [秒]'

我面临的问题是,只要报告的时间为浮动,我的正则表达式就不起作用。但是,如果我将正则表达式的一部分用于匹配浮点数并在我的原始正则表达式之外进行测试,则它可以正常工作。

例如: 案例1

_targetString = '[6152: 2152] * $ Total Time To Complete 1 Jobs: 4586.12 [Sec]'
_myRe = re.compile("\[\d+: \d\] \* \$ Total Time To Complete \d+ Jobs: \d+\.\d+ \[Sec\]")
_result = _myRe.match(targetString)

对于这种情况,匹配不起作用。我怀疑问题出在" \ d +。\ d + [Sec] "部分,因为正则表达式适用于整数。我添加到整数正则表达式的唯一方法是"。\ d +" 来处理浮点数。

案例2

_targetString = " Jobs: 4586.12 [Sec]"
myRe = re.compile(' Jobs: \d+\.\d+ \[Sec\]')
_result = _myRe.match(targetString)

这很好用。

我在这里缺少什么?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

尝试将\d+.\d+替换为限制性较小的内容,例如\d+([.]\d*)?“6152”将不匹配为“数字点数。”

答案 1 :(得分:0)

使用此正则表达式expr:

_myRe = re.compile("\[\d+: \d+\] \* \$ Total Time To Complete \d+ Jobs: \d+\.\d+ \[Sec\]")