我是脚本编写新手,一直在阅读有关如何使用正则表达式的内容。
我想获取与模式匹配的完整行。
我的输出是:
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
我尝试编写一个匹配丢包的正则表达式,并尝试获取完整的行,但无法使其工作。
cmd = re.search('(\d*)% packet loss', ping_result[int(i)], re.M|re.I)
print cmd.group()
但此输出仅打印:
00% packet loss
00% packet loss
首先,您希望在提供正则表达式字符串时使用原始字符串,这是通过在字符串前添加前缀来完成的r
,否则转义序列将被吸收。
\d
将匹配数字,但不匹配数字之间出现的点。既然你希望作为一个团体,你需要r'(\d+\.\d+)'
(if you use search
instead of match
then you don't need to worry about this):Finally you'll need something to capture everything in the line up to that number as well, which can be done easily with .*
, capturing any amount of characters. Your search pattern becomes:
r'.*(\d+\.\d+)% packet loss'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)