4

我理解.*(贪婪的量词)回溯并试图找到匹配项。和.*+(占有量词)不回溯。

但是我一直在使用.*并且.\*?经常使用但不知道何时使用.*+.

.*+有人可以给出应该在哪里使用的情况或示例吗?

一个例子的解释表示赞赏。

编辑:

我已经完成了理论部分,我重复一遍,我了解它是如何工作的。我只需要一个匹配所有格量词的例子 ( .*+)

4

2 回答 2

2

有很多(依赖于正则表达式的)实现细节,所以很难概括这些东西。例如,^.*.+您在 string 上得到一个匹配项" "^.*+.+没有你。因为第一个匹配器已经吞噬了整个空白字符串。

您可以在不希望正则表达式的下一部分意外匹配前面的一部分的任何情况下使用它。

您可以在https://regex101.com/使用 PCRE 设置进行测试

于 2018-01-19T11:56:03.260 回答
1

请注意,如果所有格模式匹配,那么贪婪模式也会匹配。反之则不成立。因此,如果要将匹配限制在较小的集合中,可以使用所有格量词。

其次,当输入字符串与您的模式不匹配时,所有格量词很有用。由于他们“吃掉”他们的输入并且不回溯,他们将更快地检测到不匹配。在极端情况下,这称为灾难性回溯,并导致站点瘫痪(包括 StackOverflow,请参见此处)。

于 2018-01-19T12:12:20.280 回答