[英]Python Regex pattern matching digits and words question?
我很难创建正则表达式模式,也许您可以帮忙。
1.目标是仅获取以粗体显示的结果,而不是使用grep xxxx的命令?
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(bold),只想匹配结果。
目标是在单词成员后得到数字:AS xxxxx (BOLD)? / 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 +”,谁)
我的正则表达式无法正常运行。
谢谢
对于第一个,似乎您想要的子网位于字符串的末尾,因此您可以完全捕获以下内容:
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'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.