正则表达式在IP地址中查找范围

时间:2016-10-05 22:21:50

标签: regex

例如,在我的cisco开关上,我想找到63-255之间的第二个八位字节的所有结果。 所以第一个八位字节10。 第二个八位字节64 - 255 第三和第四个八位字节可以是任何

所以它应该喜欢这个10. [64 - 255]。

这是我要去的地方

10 \?\ ..* \ ..* 

由于

1 个答案:

答案 0 :(得分:1)

以下正则表达式可以满足您的需求(mandatory regex101 link):

10\.(6[4-9]|[7-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(1?\d\d?|2[0-4]\d|25[0-5])\.(1?\d\d?|2[0-4]\d|25[0-5])

它可能看起来很复杂(主要是因为它的长度),但它实际上很简单。这是一个细分:

  • 10匹配应该是10
  • 的第一个八位字节
  • \.匹配一个点。其他\. s
  • 也是如此
  • (6[4-9]|[7-9]\d|1\d\d|2[0-4]\d|25[0-5])匹配第二个八位字节,确保它以64到255(含)之间的方式:
    • 匹配6后跟4,5,6,7,8或9 6[4-9](64到69之间的数字),
    • 匹配7,8或9,后跟数字[7-9]\d(70到99之间的数字),
    • 匹配1后跟两位1\d\d(数字介于100和199之间),
    • 匹配2后跟0,1,2,3或4,然后是数字2[0-4]\d(数字介于200和249之间),
    • 匹配2后跟5后跟0,1,2,3,4或5 25[0-5](数字介于250和255之间)
  • 第一个(1?\d\d?|2[0-4]\d|25[0-5])匹配第三个八位字节(可以是0到255之间的任何值),这样:
    • 匹配一个数字可选前面加1和可选后跟另一个数字1?\d\d?(0到199之间的数字),
    • 匹配2后跟0,1,2,3或4,然后是数字2[0-4]\d(数字介于200和249之间),
    • 匹配2后跟5后跟0,1,2,3,4或5 25[0-5](数字介于250和255之间)
  • 第二个(1?\d\d?|2[0-4]\d|25[0-5])使用相同的逻辑
  • 匹配第四个八位字节