我有一个模式字符串{{开始日期| 2005 | 8 | 29}} 现在我想提取2005,8,29作为三个单独的元素。 因此,我使用的正则表达式:re.findall('([0-9])+',str) 这给我5,8和9而不是2005,8,29 当我尝试搜索方法时使用相同的模式re.search('([0-9])+',str).group() 然后我得到第一个元素作为2005. 为什么这两个方法的输出有区别。什么时候应该是我当前日期模式的正则表达式?正则表达式findall和搜索给出不同的原因,尽管有相同的模式
0
A
回答
1
长话短说:你的意思是'([0-9]+)'
,而不是'([0-9])+'
。
详细信息:每对parens确定一个组。如果在一次尝试匹配时,该组被捕获多次,则仅报告最后的捕获。
特别是,当你叫这个重新对字符串,它匹配所有的"2005"
在第一次就圆,因为([0-9])
部分匹配'2'
,然后'0'
,然后'0'
,然后'5'
之前,它不能匹配任何更多。所以它匹配所有"2005"
,但是该组本身只报告了该子表达的最后一个匹配:'5'
。
相比之下,后来您尝试使用组方法re.search
。该组方法返回整个正则表达式,not the first group匹配的子字符串。所以它返回了所有的"2005"
。请尝试拨打.group(1)
来改变区别。
相关问题
- 1. Regex101和JS正则表达式搜索出不同的结果
- 2. 搜索和相同的字符串模式替换使用正则表达式
- 3. Python的正则表达式:的findall()和搜索()
- 4. 蟒蛇 - 正则表达式搜索和的findall
- 5. 正则表达式 - 它们是相同的正则表达式?
- 6. 的Python的findall和正则表达式
- 7. TCL正则表达式模式搜索
- 8. python正则表达式搜索模式
- 9. findall和正则表达式,得到正确的模式
- 10. python:使用正则表达式和findall搜索
- 11. Python正则表达式Findall
- 12. Python正则表达式Findall
- 13. Python正则表达式findall
- 14. Python findall正则表达式
- 15. 正则表达式搜索词两者是相同
- 16. 正则表达式表达与几种不同的模式
- 17. Java正则表达式相关搜索
- 18. 与正则表达式,findall和组匹配的Python模式
- 19. 不同的搜索甲骨文正则表达式参数
- 20. 正则表达式具有多个条件的不同模式
- 21. 正则表达式 - 验证具有两种不同的模式
- 22. 正则表达式:简单的搜索正则表达式?
- 23. 正则表达式搜索
- 24. 用不同的替换替换正则表达式相同模式
- 25. 正则表达式来匹配相同数字的模式
- 26. 正则表达式模式中的相同变量
- 27. Java String正则表达式划分 - 总是相同的模式
- 28. 正则表达式相同的模式中多次一号线
- 29. Python正则表达式搜索和替换原始表达式的一部分
- 30. 澄清Python正则表达式和findall()