Python - 为什么这个简单的正则表达式不起作用?

时间:2014-03-14 14:22:36

标签: python regex

以下代码应该是自我解释的。正则表达式很简单。为什么不匹配?

>>> import re
>>> digit_regex = re.compile('\d')
>>> string = 'this is a string with a 4 digit in it'
>>> result = digit_regex.match(string)
>>> print result
None

或者,这可行:

>>> char_regex = re.compile('\w')
>>> result = char_regex.match(string)
>>> print result
<_sre.SRE_Match object at 0x10044e780>

为什么第二个正则表达式有效,但不是第一个?

2 个答案:

答案 0 :(得分:3)

Herere.match()所说的If zero or more characters at the beginning of string match the regular expression pattern ...

在您的情况下,字符串开头没有任何数字\d。但对于\w,它在您的字符串开头有t

如果您想使用相同的机制检查字符串中的数字,请在正则表达式中添加.*

digit_regex = re.compile('.*\d')

答案 1 :(得分:2)

第二个找到匹配,因为string以单词字符开头。如果您想在字符串中找到匹配项,请使用searchfindall方法(我也会在评论中看到这一点)。或者更改你的正则表达式(例如.*(\d).*)并对结果使用.groups()方法。