当出现两个相等的整数时,正则表达式不应该匹配

问题描述 投票:0回答:1

以下字符串包含两个数字(下面的 1 和 2),两个数字不能相等才能匹配。它们是优先值,因此其中一个必须大于另一个。如果它们相等,则认为是错误配置。两个数字都可以在 0-512 范围内。

set hbdev "ha1" 1 "port1" 2

我有一个我认为有效的正则表达式:

set hbdev [[:print:]]+ ([0-9]|[1-9][0-9]|[1-4][0-9][0-9]|50[0-9]|51[012]) [[:print:]]+ (?<!(\d{3}))\1

重要的是,由于我限制了第一个数字的范围,因此很容易将负向前查找设置为仅查找最多三位数字。然而出于兴趣,我想让这个适用于任何大小的数字。

我尝试在否定前瞻中使用 \d+ :

set hbdev [[:print:]]+ (\d+) [[:print:]]+ (?<!(\d+))\1

但是我得到了错误:lookbehind 中的量词使其宽度不固定。

有没有办法解决这个问题,使数字可以是任意大小?

这是我的工作:https://regex101.com/r/cmOgMv/1

提前感谢您的帮助!

unique regex-lookarounds negation
1个回答
0
投票

我可能不完全关注你,但这不是吗

(\d+)  (?!\1)

(所以您正在使用的系统中会出现类似

(\d+) [[:print:]]+ (?!\1)
的内容。)

© www.soinside.com 2019 - 2024. All rights reserved.