零长度匹配是否结束匹配过程?

时间:2018-03-01 14:49:47

标签: java regex

如果我有正则表达式value 0 1 1 25D 2 35D 3 2 4 3 5 1 6 3 7 85D 8 3 和字符串a?,我会得到:

a

匹配过程在零长度匹配后结束。否则我会变得无限:

Enter your regex: a?
Enter input string to search: a
I found the text "a" starting at index 0 and ending at index 1.
I found the text "" starting at index 1 and ending at index 1.

我的问题是,零长度匹配总是结束匹配程序吗?还有其他情况吗?

1 个答案:

答案 0 :(得分:1)

  

我的问题是,零长度匹配总是结束比赛   程序

不,您的输入字符串由一个单个字符a组成,因此它匹配一个零长度位置,更多字符会导致更多匹配。

  

匹配过程在零长度匹配后结束。否则我会的   得到无限。

它取决于RegEx引擎。不同的风格以不同的方式处理零长度匹配。他们不会让同一位置的无限次比赛发生:

  

Perl,PCRE总是在比赛结束时开始下一场比赛   上一场比赛,无论是否是零长度......

     

Python在零长度匹配后前进。 gsub()函数为   搜索和替换在该位置跳过零长度匹配   之前的非零长度匹配结束。

More on zero-length matches