以下代码应该是自我解释的。正则表达式很简单。为什么不匹配?
>>> 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>
为什么第二个正则表达式有效,但不是第一个?
答案 0 :(得分:3)
Here是re.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
以单词字符开头。如果您想在字符串中找到匹配项,请使用search
或findall
方法(我也会在评论中看到这一点)。或者更改你的正则表达式(例如.*(\d).*
)并对结果使用.groups()方法。