我有一个实用的python2.7代码,可以从路由表中提取ip。它只提取x.x.x.x/xx格式的ip。但是,我有一个问题,排除路由表中的一些行。你知道吗
例如,该行:
D 10.50.80.0/24 [90/3072] via 10.10.10.1, 3w6d, Vlan10
在这行我只关心10.50.80.0/24。因为这是唯一一个使用/24符号的ip,所以我只能抓住它,让regex忽略once而不使用/(例如,10.10.10.1)。但在表中,我们有以下两个异常:
10.10.60.0/16 is variably subnetted, 58 subnets, 4 masks
C 10.10.140.0/24 is directly connected, Vlan240
我想在第二行(10.10.140.0/24)捕获IP,但不是第一行(10.10.60.0/16)。程序正在提取IP并检查表中是否有可用的子网。10.10.60.0/16是一个问题,因为不是说10.10.60.0/16在表中,而是说这个子网有可变的子网。你知道吗
目前我的工具正在捕获这个IP并将整个10.10.60.0/16范围标记为表中的,这是不正确的。我尝试了一些正则表达式编辑,但不是很满意。我不想意外地跳过任何子网,特别是第二行是类似于第一。捕获所有正确的子网是非常重要的。你知道吗
有人能建议一个最好的正则表达式编辑来完成这一点。只有具有x.x.x.x/xx的跳过行是可变子网、x子网、x掩码
这是我目前的代码:
match = re.findall(r'(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\/(?:[\d]{1,3})', text)
谢谢 达蒙
如果我答对了您的问题,您希望您现有的regex跳过任何后跟的IP/子网“可变子网”。这样做可以使用以下正则表达式:
\b(?! is variably)
\b
结尾表示单词边界(?! is variably)
有一个负的前瞻(?!
,它确保文本'is variably'不在IP/子网之后。你知道吗演示:https://regex101.com/r/jTu8cj/1
匹配项:
不匹配:
相关问题 更多 >
编程相关推荐