Lazy Optional 量词应该如何表现?
How should a Lazy Optional quantifier behave?
我正在阅读有关量词的内容,并认识到 ??
(惰性可选)量词的存在。从那以后我已经 运行 进行了一些测试,但是这个量词的行为看起来很不一致。
你们中的任何人都可以为我提供这个运算符的示例吗?
此外,我尝试测试字符串 abbb
的正则表达式 /a??b+/
,这给了我 abbb
的意外匹配。我期待 bbb
作为匹配项,因为惰性量词会优先考虑可能的较小匹配项。
对于正则表达式 /a+b??/
和字符串 aaab
,匹配是预期的 aaa
与贪婪正则表达式 /a+b?/
匹配的 aaab
。
在此先表示感谢,希望你们能帮助我了解这里发生的事情。 :)
懒惰只作用于右边,而不作用于左边。搜索模式匹配从左到右进行。一旦找到 a
的匹配项,只要模式的其余部分匹配,它就会尝试使用它。 a?
是贪心还是懒惰并不重要。
如果您比较模式 a+b?
和 a+b??
,并且输入像
,那么懒惰很重要
aaab
greedy 版本会匹配整个字符串,lazy 版本只会匹配 aaa
.
这可以更好地说明 aa
与:
(a?)(a+)
https://regex101.com/r/c6tNrM/2
Ensure that group 1 one has an a
. Give the rest of the a
chars to group 2
对
(a??)(a+)
https://regex101.com/r/c6tNrM/3
Group 1 might contain an a
unless something else matches it more greedily in group 2
/a+b??/
翻译成:
a+
- 给我所有连续的 a
个字符
b??
- 给我一个 b
char 如果它存在 char 但我希望你不要,除非有更多的正则表达式要处理。此外,如果 b
在附加正则表达式中匹配,那么我不想要它。
/a+b?/
转换为:
a+
- 给我所有连续的 a
个字符
b?
- 给我一个 b
个字符(如果存在)
我正在阅读有关量词的内容,并认识到 ??
(惰性可选)量词的存在。从那以后我已经 运行 进行了一些测试,但是这个量词的行为看起来很不一致。
你们中的任何人都可以为我提供这个运算符的示例吗?
此外,我尝试测试字符串 abbb
的正则表达式 /a??b+/
,这给了我 abbb
的意外匹配。我期待 bbb
作为匹配项,因为惰性量词会优先考虑可能的较小匹配项。
对于正则表达式 /a+b??/
和字符串 aaab
,匹配是预期的 aaa
与贪婪正则表达式 /a+b?/
匹配的 aaab
。
在此先表示感谢,希望你们能帮助我了解这里发生的事情。 :)
懒惰只作用于右边,而不作用于左边。搜索模式匹配从左到右进行。一旦找到 a
的匹配项,只要模式的其余部分匹配,它就会尝试使用它。 a?
是贪心还是懒惰并不重要。
如果您比较模式 a+b?
和 a+b??
,并且输入像
aaab
greedy 版本会匹配整个字符串,lazy 版本只会匹配 aaa
.
这可以更好地说明 aa
与:
(a?)(a+)
https://regex101.com/r/c6tNrM/2
Ensure that group 1 one has an
a
. Give the rest of thea
chars to group 2
对
(a??)(a+)
https://regex101.com/r/c6tNrM/3
Group 1 might contain an
a
unless something else matches it more greedily in group 2
/a+b??/
翻译成:
a+
- 给我所有连续的a
个字符b??
- 给我一个b
char 如果它存在 char 但我希望你不要,除非有更多的正则表达式要处理。此外,如果b
在附加正则表达式中匹配,那么我不想要它。
/a+b?/
转换为:
a+
- 给我所有连续的a
个字符b?
- 给我一个b
个字符(如果存在)