我是脚本新手,并且一直在阅读有关如何使用正则表达式的信息。
我想获取匹配模式的完整行。
我的输出是:
64 bytes from 33.33.33.33: icmp_seq=9 ttl=254 time=1.011 ms
--- 33.33.33.33 ping statistics ---
10 packets transmitted, 10 packets received, 0.00% packet loss
Run Code Online (Sandbox Code Playgroud)
我尝试编写匹配丢包的正则表达式,并尝试获取完整的行,但无法使其正常工作。
有人可以帮我吗..
cmd = re.search('(\d*)% packet loss', ping_result[int(i)], re.M|re.I)
print cmd.group()
Run Code Online (Sandbox Code Playgroud)
但是此输出仅打印
00% packet loss
00% packet loss
Run Code Online (Sandbox Code Playgroud)
首先,要在提供正则表达式字符串时使用原始字符串,这是通过在字符串前面加上来完成的r,否则将吸收转义序列。
\d将匹配数字,但不匹配它们之间出现的点。由于您希望将其作为一个小组,因此您需要r'(\d+\.\d+)'
最后,您还需要一些东西来捕获该数字之前的所有内容,这很容易完成,可以.*捕获任意数量的字符。您的搜索模式变为:
r'.*(\d+\.\d+)% packet loss'
Run Code Online (Sandbox Code Playgroud)
如果要明确说明行的开头和结尾,请使用^(开始)和$(结束)特殊字符
r'^.*(\d+\.\d+)% packet loss$'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3833 次 |
| 最近记录: |