正则表达式捕获IP地址(S,G)多播

时间:2019-04-11 23:14:32

标签: regex

此正则表达式用于捕获IP地址。我需要一种格式:
(1.1.1.1,230.1.1.1)

如何找到合适的RegEx?

我想提取(S,G)为:

1.1.1.1 230.1.1.1

A

1 个答案:

答案 0 :(得分:0)

您已经具有一个IP地址的模式。现在,您要查找一对带括号的IP地址,您可以重复该模式,将stacking: 'normal'放在,\(之间。如果要搜索多行,则可能需要添加多行标志\)。要实际捕获整个地址,您必须将其围成一个组。这将使:

(?m)

那当然很丑。我们可以通过剔除重复部分来改进它,例如。 g。:

match = re.findall(r'(?m)^\((((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(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]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\)$' , line)
for m in match:
    S = m[0]
    G = m[4]
    print S, G

在这里,我还将I = '(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' # pattern for 1 to 255 IP = '(?:' +I+ '\.){3}' +I # pattern for IP address SG = '(?m)^\((' +IP+ '),(' +IP+ ')\)$' # pattern for (S,G) match = re.findall(SG, line); for S, G in match: print S, G 插入不需要检索的组中,以便仅IP地址保留在?:中。