当前位置: 代码迷 >> python >> Python-为什么这个简单的正则表达式不起作用?
  详细解决方案

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

热度:92   发布时间:2023-06-21 10:56:43.0

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

>>> 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>

为什么第二个正则表达式起作用,而不是第一个起作用?

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')

第二个找到匹配项,因为string以单词字符开头。 如果要在字符串中查找匹配项,请使用searchfindall方法(我也认为这是在注释中建议的)。 或更改您的正则表达式(例如.*(\\d).* ),并在结果上使用.groups()方法。