懒惰和贪婪的想法很容易理解,但我只见过/用过*+
曾经在我的正则表达式中(在 Java 中)[A]|[^B]*+(?!C)
(A、B、C 是任意值)仅仅是因为它在惰性修饰符导致 StackOverflow 错误时起作用。
由于大多数搜索引擎无法搜索符号,因此我找不到任何相关文档。那么 *+ 究竟做了什么以及它是如何做到的呢?
最佳答案
贪婪量词匹配它所能匹配的一切,然后模式回溯直到匹配成功。
一个惰性量词向前跟踪直到匹配成功。
占有量词匹配它所能匹配的一切和 从不回溯 .+
表示所有格量词。例如,如果可以用作 ++
或 *+
.
这种防止回溯的能力意味着它可以停止 catastrophic backtracking .
关于regex - *+ 量词究竟有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18067446/