为什么这个正则表达式匹配尽可能少的字符?

时间:2014-08-02 02:48:43

标签: regex

我可以使用以下正则表达式在另一个'a'之前匹配'a',后跟至少2个其他字符。

a.{2,}?a

有趣的是,包括问号使正则表达式与可能的中间字符数最少的实例匹配,例如,给定以下字符串,

abbabbbba

正则表达式将匹配最左边的abba而不是整个字符串。为什么包含问号会导致正则表达式匹配具有最少中间字符数的实例?

2 个答案:

答案 0 :(得分:1)

?表示懒惰匹配

这是你的正则表达式的详细信息

/一个。{2,}?一个/

a匹配字面字符(区分大小写)

.匹配任何字符(换行符除外)

{2,}量词:2到无限次

?尽可能少,根据需要扩展[懒惰]

a匹配字面字符(区分大小写)

答案 1 :(得分:1)

量词之后的问号会使量词变得懒惰。这是正则表达式的基本功能,您需要了解更多相关信息。

链接:regular-expressions.info

(?:或|和)和hwnd评论中的那个。