regex之正则表达式可以断言 2 个子匹配项相等吗

kenshinobiy 阅读:173 2025-06-02 22:19:02 评论:0

假设这个简单的正则表达式,

(?P<first>\d+)\.(?P<second>\d+)

它可以匹配像“123.456”这样的字符串,

first -> 123, second -> 456

根据这个例子,有没有办法断言“first”应该等于“second”,否则输入字符串将不匹配?

请您参考如下方法:

您可以捕获捕获组中点之前的第一位数字并使用 backreference在第 1 组的点之后:

(?P<first>\d+)\.(?P<second>\1)

或者您可以通过name 引用第一个捕获组:

(?P<first>\d+)\.(?P<second>(?P=first))

根据 UnbearableLightness 的评论你可以使用 word boundaries \b或使用 anchor ^$断言行的开始和结束。

\b(?P<first>\d+)\.(?P<second>(?P=first))\b


声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号