Regex 方括号后的正则表达式管道

Regex 方括号后的正则表达式管道,regex,Regex,我发现了一个我完全不懂的正则表达式 看起来是这样的: ([|)\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b(]|) 我知道它试图匹配一些数字,比如255.255,它应该是一个完整的单词 但是“([|”)”([|”)是干什么的?方括号和最后一个括号中的管道的顺序似乎也是错误的 krackmoe,有趣的是,这里没有([|):这是一种视错觉 正则表达式引擎没有看到([|) 它会看到

我发现了一个我完全不懂的正则表达式

看起来是这样的:

([|)\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b(]|)
我知道它试图匹配一些数字,比如255.255,它应该是一个完整的单词


但是“([|”)”([|”)是干什么的?方括号和最后一个括号中的管道的顺序似乎也是错误的

krackmoe,有趣的是,这里没有
([|)
:这是一种视错觉

正则表达式引擎没有看到
([|)

它会看到
打开捕获组1,然后它会看到一个字符类
[|)\b(25[0-5]
,由于几个原因,它没有太多意义。例如,
\b
与文字字符“b”匹配,字符2和5与
0-5
范围是冗余的

所以你不理解它是对的

我猜想作者想在这里加上一个词的边界,但目前来看,这是一个拼写错误

作为参考,这里是对regex的一个令牌一个令牌的解释(别担心,我并没有键入所有这些,它是由RegexBuddy自动生成的)


regex的用途还不清楚。Debuggex提供了很好的可视化效果

关于0~255的部分是明确的(000,00也是可接受的值)。但尝试匹配([]符号)的原因不明

我相信第一个
[
和最后一个
]
是因为错误而出现的。没有它们,内部正则表达式看起来是合理的。但是
(|)
\b
看起来也不对,所以我猜我们也可以省略
(|)

(|)\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b(|)


它在语法上是有效的,但毫无意义。一定是个错误。
(|)\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b(|)