Regex 要匹配IP地址范围的正则表达式

Regex 要匹配IP地址范围的正则表达式,regex,Regex,我想匹配10.0-29.x.x、10.31-39.x.x和10.41-253.x.x的IP地址。 在下面的几行中,我想捕捉第三行和下面的几行 network 10.40.5.0 0.0.0.255 network 10.255.5.0 0.0.0.255 network 10.23.3.0 0.0.0.255 netowrk 10.273.255.0 0.255.255 因此,它的工作方式是,如果存在匹配项,它将设置一个标志,表明配置无效。我可能有10行无效行,或者只有1行。没关系 Regex

我想匹配10.0-29.x.x、10.31-39.x.x和10.41-253.x.x的IP地址。 在下面的几行中,我想捕捉第三行和下面的几行

network 10.40.5.0 0.0.0.255
network 10.255.5.0 0.0.0.255
network 10.23.3.0 0.0.0.255
netowrk 10.273.255.0 0.255.255

因此,它的工作方式是,如果存在匹配项,它将设置一个标志,表明配置无效。我可能有10行无效行,或者只有1行。没关系

Regex不是设计用来做数学的。 但是,如果您想要3或4,可以尝试类似于[3-4]{1}的方法。
要进行更大的处理,您可能必须首先将其与通用IP正则表达式匹配,然后再使用任何语言进行处理。

问题的核心是与以下数字范围匹配的正则表达式:0-29、31-39、41-253

与此匹配的扩展正则表达式是:

^网络10.([0-9]| 1[0-9]| 2[0-9]| 3[1-9]| 4[1-9]|[5-9][0-9]| 1[0-9][0-9]| 2[0-4][0-9]| 25[0-3])。[0-9]+[0-9]+[0-9]+

正则表达式分为以下步骤: 0-9、10-19、20-29、31-39、41-49、50-99100-199200-249250-253

可以工作的shell脚本是:

if{
cat输入文件|
白鹭网络10.([0-9]| 1[0-9]| 2[0-9]| 3[1-9]| 4[1-9]|[5-9][0-9]| 1[0-9][0-9]| 2[0-4][0-9]| 25[0-3])[0-9]+[0-9]+[0-9]+'
}
然后
如果匹配,则返回操作
其他的
如果不匹配,则返回操作

fi

那么你的情况如何?你试过什么?您目前的解决方案存在哪些问题?请提供有关您当前尝试的其他信息(我假设您在询问之前已经进行了多次尝试,因此只需包括最相关的尝试)以及您在这些尝试中遇到的问题。正则表达式用于匹配模式,而不是检查数值。使用正则表达式查找可能的IP地址,然后用您选择的语言解析它们并检查它们的数值。