我有一个文件中的IP地址,其中包含正则表达式的结尾。例如:
111.111.11.[2-5]
111.11.11.[2,3,7]
这意味着IP地址可以在111.111.11.2、111.111.11.3等范围内。
我需要能够接收该文件,并为每个选项展开这些正则表达式。我的意思是给出111.111.11.2-5,我会在上面运行一个脚本并得到以下结果:
111.111.11.2
111.111.11.3
111.111.11.4
111.111.11.5
发布于 2017-05-18 06:37:42
在这种情况下,我将使用Python:
expand_ip_range.py脚本:
import sys
with open(sys.argv[1], 'r') as f:
for l in f.read().splitlines():
# extracting the ending part with a range
parts = l.rsplit('.', 1)
r = parts[1].strip('[]') # getting range relative representation
if '-' in r: # if it's range by hyphen `-`
if r.count('-') > 1:
raise Exception("Invalid range " + r)
else:
bounds = r.split('-') # range boundaries
for i in range(int(bounds[0]), int(bounds[1])+1):
print("%s.%s" % (parts[0], i))
elif ',' in r: # if it's range by comma `,`
items = r.split(',')
for i in items:
print("%s.%s" % (parts[0], i))
使用(在Python3上测试):
python3 expand_ip_range.py yourfile
产出:
111.111.11.2
111.111.11.3
111.111.11.4
111.111.11.5
111.11.11.2
111.11.11.3
111.11.11.7
https://stackoverflow.com/questions/44035781
复制相似问题