2017-06-06 62 views
0

我使用Python2.7和我遇到这样的问题,我有字符串:Python的正则表达式re.findall

s = 'No of tests: 23' 

我使用下面的正则表达式:

re.findall('No of tests: \d+',s) 

而且很显然,正则表达式返回一个空列表。任何想法为什么?

+2

有一个拼写错误,'/ d +'必须写成'\ d +'(即'r'No of tests:\ d +'')。修复了错字之后,[该问题不再存在](https://ideone.com/Tv6M5y)。 –

+0

这是一个错字,问题依然存在。 – distrobyte

+0

无法重现。我在Python 2.6.6和3.6.0上得到了'['No'tests:23']',正如所料。顺便说一句,在任何包含反斜杠的正则表达式上使用原始字符串是一个好主意。 –

回答

1

您的字符串在数字之前包含2个空格。

使用\s*来匹配任何零个或多个空格字符是一个好主意,当输入字符串是用户定义的并且空格可能以不同的数字出现时。要确保有一个或多个空格,请使用\s+

因此,建议使用

r'No\s+of\s+tests:\s*\d+' 

注意,原始字符串字面量在Python定义正则表达式模式时是最好的(你不会得到任何问题,是由于逃避特殊字符,而不是这里的情况,虽然)。