Regex -^(abc)之间的差异|A)$和^abc| a$

qmelpv7a  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(68)

输入单词abcab和以下两个正则表达式:
^abc|(abc(abc|a))$
^(abc|(abc(abc|a)))$
为什么第一个正则表达式返回匹配abc,而第二个正则表达式什么都不匹配(预期行为)?
唯一的区别是^$之间的括号,就我而言,这不应该改变任何东西。
我在regex101.com上用Python正则表达式测试了它。

hujrc8aj

hujrc8aj1#

如果没有圆括号导致| s只在一个组内拆分(并保持该组外的所有内容不变),^$只适用于您所在的拆分结果。
也就是说,^abc|(abc(abc|a))$表示:

  • ^abc(只开锚,不关锚;所以abc后跟 anything else 是成功匹配)

或者是

  • (abc(abc|a))$(仅闭锚,无开锚;所以以abcabcabca结尾的 * 任何内容 * 都是成功匹配)。

相关问题