python - Python正则表达式模式匹配数字和单词问题?
问题描述
我很难创建一个正则表达式模式,也许你可以帮忙。
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 来自命令本身,第二个是结果(粗体),只想匹配结果。
目标是获取成员一词后的数字: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+',who)
我的正则表达式模式无法正常工作。
谢谢
解决方案
对于第一个,您想要的子网似乎位于字符串的末尾,因此您可以准确捕获:
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'
推荐阅读
- java - 线程“主”java.util.NoSuchElementException errorr 中的异常
- go - 尝试:除了:通过但在 Go 中?(当出现网络问题时让 Go 不会崩溃?)
- javascript - 在 Django 中从后端到前端操作和传递 JSON
- laravel - 使用 Dropbox 驱动程序无法从 Laravel 上传到 Dropbox
- sql-server - 将 Excel 公式(逻辑)转换为 SQL Server
- android - 将按钮放在 AppBarOverlay 的右上角
- python - 在 Heroku 上使用 Telegram Bot 发送图像时出错
- python - PyGame 不绘制 X
- unit-testing - 如何仅将 pact-jvm 提供程序与 json 文件集成
- php - 将 HTML 表单提交到 .txt 文件,但是如何让新帖子出现在顶部,而不是底部?