输入单词abcab和以下两个正则表达式:^abc|(abc(abc|a))$个^(abc|(abc(abc|a)))$个为什么第一个正则表达式返回匹配abc,而第二个正则表达式什么都不匹配(预期行为)?唯一的区别是^和$之间的括号,就我而言,这不应该改变任何东西。我在regex101.com上用Python正则表达式测试了它。
abcab
^abc|(abc(abc|a))$
^(abc|(abc(abc|a)))$
abc
^
$
hujrc8aj1#
如果没有圆括号导致| s只在一个组内拆分(并保持该组外的所有内容不变),^和$只适用于您所在的拆分结果。也就是说,^abc|(abc(abc|a))$表示:
|
^abc
或者是
(abc(abc|a))$
abcabc
abca
1条答案
按热度按时间hujrc8aj1#
如果没有圆括号导致
|
s只在一个组内拆分(并保持该组外的所有内容不变),^
和$
只适用于您所在的拆分结果。也就是说,
^abc|(abc(abc|a))$
表示:^abc
(只开锚,不关锚;所以abc
后跟 anything else 是成功匹配)或者是
(abc(abc|a))$
(仅闭锚,无开锚;所以以abcabc
或abca
结尾的 * 任何内容 * 都是成功匹配)。