在Java Pattern 类的文档中,我看到确切的量词X{n}具有贪婪和不情愿的形式:



该文档提供了贪婪行为和勉强行为之间区别的一般示例,但没有提供确切量词的任何示例。

一开始我以为,“也许,不同之处在于X本身可以以不同的方式进行匹配。”但是然后X可以在其中拥有自己的贪婪/勉强的说明符,并且可以肯定的是,我测试了它,并且没有什么区别(greedyreluctant)。

鉴于这两种情况都将精确匹配n时间,两者的行为之间是否有任何区别?

最佳答案

勉强vs贪婪只有在可能进行可变长度匹配时才有意义;勉强的量词将匹配可能的最小值,而贪婪地匹配最大值。

为了区分有限数量的行为,它必须具有范围,即,数量必须具有不同的最小值和最大值。为了显示:

给定输入1234567,捕获的组为:

(\d{2,3})(\d+)  -> (123)(4567)
(\d{2,3}?)(\d+) -> (12)(34567)

当只有固定数量时,例如\d{2},通过添加?不会在行为上有所不同。

关于regex - 确切的贪婪/勉强X {n}之间有何区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36110305/

10-12 15:22