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(|)