Python正则表达式匹配整行

use*_*922 4 python regex

我是脚本新手,并且一直在阅读有关如何使用正则表达式的信息。

我想获取匹配模式的完整行。

我的输出是:

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)

Rya*_*ing 5

首先,要在提供正则表达式字符串时使用原始字符串,这是通过在字符串前面加上来完成的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)