我无法弄清楚为什么以下正则表达式似乎不起作用.
我知道我可以形成其他正则表达式来使这项工作,但我认为这应该工作.
re.search ("(\d*)", "prefix 1234 suffix").groups()
('',)
Run Code Online (Sandbox Code Playgroud)
有趣的是,findall似乎有效:
re.findall("(\d*)", "prefix 1234 suffix")
['', '', '', '', '', '', '', '1234', '', '', '', '', '', '', '', '']
Run Code Online (Sandbox Code Playgroud)
我理解为什么会有效,但我仍然对为什么搜索不起作用感到困惑?我的理解是匹配应该强制它匹配整个字符串,但搜索应该在字符串中的任何位置找到数字
因为.search运行一次搜索,并且它首先匹配.因为\d*根本不匹配任何字符,它可以匹配的第一个位置是字符串的开头,不捕获任何字符 - 所以第一个捕获组是''.它正是你所要求的.
如果你(\d+)改为使用正则表达式,它必须匹配至少一个数字,那么它可以匹配的第一个位置就是它将被1捕获1234.
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |