在Java Pattern
类的文档中,我看到确切的量词X{n}
具有贪婪和不情愿的形式:
该文档提供了贪婪行为和勉强行为之间区别的一般示例,但没有提供确切量词的任何示例。
一开始我以为,“也许,不同之处在于X
本身可以以不同的方式进行匹配。”但是然后X
可以在其中拥有自己的贪婪/勉强的说明符,并且可以肯定的是,我测试了它,并且没有什么区别(greedy与reluctant)。
鉴于这两种情况都将精确匹配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/