2017-06-06 21 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定義正則表達式模式時是最好的(你不會得到任何問題,是由於逃避特殊字符,而不是這裏的情況,雖然)。