此正则表达式未返回匹配项

时间:2013-11-28 19:31:18

标签: python regex

我使用原始字符串表示法来表达一个相当简单的正则表达式,而我没有得到匹配对象。壳牌成绩单如下:

[~/Documents/Programming/rlm]$ python
python
Python 2.7.5 (default, Aug 25 2013, 00:04:04) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> s = 'bob2323'
s = 'bob2323'
>>> import re
import re
>>> re.match(r'\d+', s)
re.match(r'\d+', s)
>>> 

2 个答案:

答案 0 :(得分:2)

使用re.search代替re.match,因为re.match仅匹配字符串的开头。:

>>> re.search(r'\d+', s)
<_sre.SRE_Match object at 0xb5eefbf0>

re.match vs re.search

  

re.match()仅在字符串的开头检查匹配项,   而re.search()检查字符串中任何位置的匹配。

答案 1 :(得分:2)

您需要使用re.searchre.match仅尝试从字符串开头开始匹配。但是,re.search将搜索整个字符串,以查找与模式匹配的子字符串。

>>> import re
>>> s = "bob2323"
>>> re.match(r'\d+', s)
>>> re.search(r'\d+', s)
<_sre.SRE_Match object at 0x7f4d19beb988>
>>> 

有关详细信息,请参阅文档中的search() vs. match()