Python正则表达式不匹配

Mat*_*att 9 python regex

这是我确定我遗漏了一些简单的事情之一,但是......在下面的示例程序中,我正在尝试使用Python的RE库来解析字符串"line"以获得浮点数在百分号之前的数字,即"90.31".但代码总是打印"不匹配".

我也试过了几个其他的正则表达式,都有相同的结果.我错过了什么?

#!/usr/bin/python
import re
line = '    0 repaired, 90.31% done'
pct_re = re.compile(' (\d+\.\d+)% done$')
#pct_re = re.compile(', (.+)% done$')
#pct_re = re.compile(' (\d+.*)% done$')
match = pct_re.match(line)
if match: print 'got match, pct=' + match.group(1)
else: print 'no match'
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 18

match只匹配字符串的开头.如果你这样做,你的代码工作正常pct_re.search(line).


Roh*_*ain 5

您应该使用re.findall:

>>> line = '    0 repaired, 90.31% done'
>>> 
>>> pattern = re.compile("\d+[.]\d+(?=%)")
>>> re.findall(pattern, line)
['90.31']
Run Code Online (Sandbox Code Playgroud)

re.match将在字符串的开头匹配.所以你需要为完整的字符串构建正则表达式.