此正则表达式用于捕获IP地址。我需要一种格式:
(1.1.1.1,230.1.1.1)
如何找到合适的RegEx?
我想提取(S,G)为:
1.1.1.1 230.1.1.1
A
答案 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地址保留在?:
中。