Skip to main content
 首页 » 编程设计

python之开始(python)正则表达式问题

2025年05月04日23mq0036

我无法弄清楚为什么以下正则表达式似乎不起作用。

我知道我可以组成其他正则表达式来完成这项工作,但我认为这个应该可以。

re.search ("(\d*)", "prefix 1234 suffix").groups() 
('',) 

有趣的是,findall 似乎有效:

re.findall("(\d*)", "prefix 1234 suffix") 
['', '', '', '', '', '', '', '1234', '', '', '', '', '', '', '', ''] 

我明白为什么会这样,但我仍然对为什么搜索不起作用感到困惑?我的理解是 match 应该强制它匹配整个字符串,但是搜索应该找到字符串中任意位置的数字

请您参考如下方法:

因为 .search 运行搜索一次,并在第一时间进行匹配。由于 \d* 根本不能匹配任何字符,它可以匹配的第一个位置是字符串的开头,不捕获任何字符——所以第一个捕获组是 ''。它完全按照您的要求去做。

如果您改用正则表达式 (\d+),它必须匹配至少一个 数字,那么它可以匹配的第一个位置是 1,它将捕获 1234。