我很难创建正则表达式模式,也许您可以帮忙。
1。目标是仅获取以粗体显示的结果,而不是带有grep x.x.x.x的命令?
var = "grep " +net+ "/mnt/hgfs/IRR/fgen.txt"
f2pat = re.findall(r'^([\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})/\d+',fgen)
print ("FGEN Command: ",f2pat)
FGEN命令:grep 223.253.0.0/20 /mnt/hgfs/IRR/fgen.txt 223.253.0.0/20
现在我在输出中确实有两个地址1是命令本身的第二个地址,第二个是result(粗体),只想匹配结果。
目标是获取单词成员后的数字:AS xxxxx (粗体)? / mnt / hgfs / IR / FILE / as4431-customers-sc:members:AS 28723 ,AS3212
fpas = re.findall(r'(^ members:AS)(?:\ d {1,6})',xxx)
目标是在工作路径之后获取/匹配IP地址(粗体):? RADB:路线: 1.0.0.0/8
radbpat = re.findall(r'(?<= RADB:)(\ S + \ S +)(?<= route)(\ S + \ S +)(?:[\ d] {1,3})。 (?:[\ d] {1,3})。(?:[\ d] {1,3})。(?:[\ d] {1,3})/ \ d +',谁)
我的正则表达式无法正常工作。
谢谢
答案 0 :(得分:0)
对于第一个,看来您想要的子网位于字符串的末尾,因此您可以准确地捕获到该子网:
text = 'grep 223.253.0.0/20 /mnt/hgfs/IRR/fgen.txt 223.253.0.0/20'
result = re.match('^.+\s([\d\.\/]+)$', text).group(1)
# result = '223.253.0.0/20'
对于第二个实例,您似乎只想捕获AS的第一个实例 xxxxx ,因此您可以执行以下操作:
text = '/mnt/hgfs/IR/FILE/as4431-customers-sc:members: AS28723, AS3212'
result = re.match('^.+\b(AS\d+)\b.+$', text).group(1)
# result = 'AS28723'
对于第三个解决方案,您可以重用第一个解决方案:
text = 'RADB: route: 1.0.0.0/8'
result = re.match('^.+\s([\d\.\/]+)$', text).group(1)
# result = '1.0.0.0/8'