如果我有正则表达式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.
我的问题是,零长度匹配总是结束匹配程序吗?还有其他情况吗?
答案 0 :(得分:1)
我的问题是,零长度匹配总是结束比赛 程序
不,您的输入字符串由一个单个字符a
组成,因此它匹配一个零长度位置,更多字符会导致更多匹配。
匹配过程在零长度匹配后结束。否则我会的 得到无限。
它取决于RegEx引擎。不同的风格以不同的方式处理零长度匹配。他们不会让同一位置的无限次比赛发生:
Perl,PCRE总是在比赛结束时开始下一场比赛 上一场比赛,无论是否是零长度......
Python在零长度匹配后前进。 gsub()函数为 搜索和替换在该位置跳过零长度匹配 之前的非零长度匹配结束。