4
A
回答
5
这是一个非贪婪匹配。在[AB]*?
中,正则表达式只寻找[AB]
,以使整个正则表达式匹配搜索的字符串,而贪婪版本[AB]*
寻找尽可能多的出现次数。这是Perl的regexes的一个特性,因此可以在PCRE(Perl Compatible Regular Expressions)(参见repetition)和其他系统中找到Perl的定义。
的PCRE页面给出了一个例子:
的其中[贪婪]给出问题的经典例子是尝试匹配C语言的注释。这些出现在
/*
和*/
之间,并且在评论中可能出现个别的*
和/
个字符。试图通过应用模式来匹配C注释:/\*.*\*/
字符串
/* first comment */ not comment /* second comment */
失败,因为它由于
.*
项目的贪吃整个字符串匹配。如果一个量词后跟一个问号,它就不再是贪婪,而是次可能的最小数量相匹配,因此模式
/\*.*?\*/
做正确的事与C注释。
2
Jonathan已经解释了区别,但这里有一个例子可以帮助你理解这里发生了什么。
鉴于字符串 “9AB”:
([0-9][AB]*?)
比赛唯一的 “9A”,因为它很快将停止为 “A” 匹配(懒惰)([0-9][AB]*)
整个字符串匹配(“9AB “),因为它消耗‘A’和成功匹配以下‘B’(贪婪)
注意,第二个将匹配位数,随后零个或多个(无限制)数量的“A”或“B”。
相关问题
- 1. 正则表达式量词
- 2. 否定词组? - 正则表达式(正则表达式)
- 3. 正则表达式组合
- 4. 正则表达式量词的java
- 5. java的正则表达式量词
- 6. Javascript正则表达式“无效量词”
- 7. 正则表达式懒惰量词
- 8. Javascript正则表达式量词
- 9. 正则表达式嵌套量词+
- 10. C++正则表达式匹配“+”量词
- 11. 正则表达式嵌套量词*
- 12. 正则表达式量词OR
- 13. 正则表达式与?和{}量词
- 14. 正则表达式:使用量词
- 15. 爪哇正则表达式possesive量词
- 16. 正则表达式量词错误
- 17. 正则表达式 - 匹配一组词
- 18. 分词正则表达式
- 19. 两个正则表达式的组合
- 20. 正则表达式中的“+”与“$”组合
- 21. 传递变量的JavaScript正则表达式:变量和正则表达式模式的组合
- 22. 使用量词的多个正则表达式捕获组
- 23. 带捕获组问题的正则表达式量词
- 24. 正则表达式,贪婪的量词多个捕获组
- 25. 正则表达式根据单词组合筛选行
- 26. 正则表达式的所有合法正则表达式的
- 27. 正则表达式与各种组合
- 28. 正则表达式 - 组合两个类
- 29. 合并三个正则表达式组
- 30. data.table setnames与正则表达式组合
谢谢你的例子,Maroun。我在Python中试过这个例子,而不是得到你的建议,我得到了“9”的结果。这是我的代码: x = re.search(r'[0-9] [AB] *?','9AB') print x.group(0) – akaii
哪一个是正确的结果,“9 “或”9A“? – akaii
9是正确的,因为允许'[AB]'的零匹配。当贪婪的量词后面有些东西时,贪婪主要是重要的。 –