首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式模式查找和搜索给出相同模式的不同原因

正则表达式模式查找和搜索给出相同模式的不同原因
EN

Stack Overflow用户
提问于 2012-05-07 11:40:04
回答 1查看 120关注 0票数 0

我有一个模式为{{Start date|2005|8| 29 }}的字符串,现在我想提取2005,8,29作为三个独立的元素。因此我使用正则表达式: re.findall('(0-9)+',str)当我尝试搜索方法re.search('(0-9)+',str).group()时,我得到的是5,8和9,而不是2005,8,29,然后我得到了2005年的第一个元素。为什么这两种方法的输出会有差异。什么时候应该是我当前日期模式的正则表达式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-07 11:44:55

长话短说:你指的是'([0-9]+)',而不是'([0-9])+'

详细信息:每对双亲确定一个组。如果在一次匹配尝试中多次捕获该组,则仅报告最后一次捕获。

特别是,当您对字符串调用这个re时,它在第一轮中匹配所有的"2005",因为([0-9])部分匹配'2',然后是'0',然后是'0',然后是'5',直到它不能再匹配。所以它匹配所有的"2005",但是组本身只报告了该子表达式的最后一个匹配:'5'

相比之下,后来您尝试了使用group方法的re.search。group方法返回与整个正则表达式not the first group匹配的子字符串。所以它返回了所有的"2005"。请尝试调用.group(1)来查看其中的差异。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10476387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档