是否可以使用“零或一”的懒惰评估,即正则表达式中的双重问号?

参见英文答案 >
Is the lazy version of the ‘optional’ quantifier (‘??’) ever useful in a regular expression?                                    2个

我目前正在阅读Jan Goyvaerts和Steven Levithan的正则表达手册.他们提到任何量词都可以通过放置?在它之后,所以这包括?量词,导致??.不幸的是,似乎没有进一步提及??在书里.

据我了解x?匹配字符x零次或一次,但最好是一次. X??匹配x零次或一次,但最好匹配它可以的零次.

我在regex101.com左右玩了一下,但没有想出这种差异实际上很重要的情况.吗?在任何正则表达式的味道中有任何实际意义吗?

最佳答案 以x123的输入为例

现在用正则表达式测试:

(x??)(x*\d+)

您将获得匹配的组:

>“”
>“x123”

现在用正则表达式测试:

(x?)(x*\d+)

您将获得匹配的组:

>“x”
>“123”

RegEx Demo for test case #1
RegEx Demo for test case #2

根据定义:

> x ??匹配字符x在零和一次之间,尽可能少,根据需要扩展[懒惰]
> x?匹配字符x在零和一次之间,尽可能多次,根据需要返回[贪心]

点赞