请教一句话的写法
时间:2010-10-13
来源:互联网
eth2 Link encap:Ethernet HWaddr 00:1E:67:01:21:04
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:1080341 errors:0 dropped:0 overruns:0 frame:0
TX packets:1024529 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:663682075 (632.9 MiB) TX bytes:976556689 (931.3 MiB)
Interrupt:16 Base address:0x2020 Memory:b8c60000-b8c80000
eth3 Link encap:Ethernet HWaddr 00:1E:67:01:21:05
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:1038395 errors:0 dropped:0 overruns:0 frame:0
TX packets:1221259 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:970460899 (925.5 MiB) TX bytes:689933196 (657.9 MiB)
Interrupt:17 Base address:0x2000 Memory:b8c20000-b8c40000
现在想取4个数值,分别是eth2和eth3的RX Packets和TX Packets. 我现在的做法比较笨,用split将result分成数组,然后逐行判断比较,这是可行的。
但我想应该有很简单的办法,可是不知道正则表达式哪里写错了。看以下代码:
- my ($eth2_rx, $eth2_tx, $eth3_rx, $eth3_tx) = (0, 0, 0, 0);
- if($result_begin =~ /RX packets\:([0-9]+)(.+)TX packets\:([0-9]+)(.+)RX packets\:([0-9]+)(.+)TX packets\:([0-9]+)/) {
- ($eth2_rx, $eth2_tx, $eth3_rx, $eth3_tx) = ($1, $3, $5, $7);
- }
作者: finixlei 发布时间: 2010-10-13
作者: finixlei 发布时间: 2010-10-13
回复 finixlei
你的问题在于字符串中有换行符\n,而正则表达式中的“.”不能匹配\n。
只要在正则表达式后加上修饰符s,即可解决问题,如下:
- $result_begin =~ /RX packets\:([0-9]+)(.+?)TX packets\:([0-9]+)(.+?)RX packets\:([0-9]+)(.+?)TX packets\:([0-9]+)/s
- if($result_begin =~ /RX packets\:([0-9]+)(?:.+?)TX packets\:([0-9]+)(?:.+?)RX packets\:([0-9]+)(?:.+?)TX packets\:([0-9]+)/s) {
- ($eth2_rx, $eth2_tx, $eth3_rx, $eth3_tx) = ($1, $2, $3, $4);
- }
作者: 珞水的大叔 发布时间: 2010-10-13
后面没太看明白,(?:.+?) 是什么意思?是类似于C语言中的问号操作符吗?还是仍是正则表达式?
作者: finixlei 发布时间: 2010-10-13
(?:.+?)里面
(?:)表示不保存括号里面匹配的内容到变量 $数字 中
.+?表示.+的非贪婪模式
这两个都是为了节省正则表达式匹配时的开销
作者: 珞水的大叔 发布时间: 2010-10-13
后面没太看明白,(?:.+?) 是什么意思?是 ...
finixlei 发表于 2010-10-13 17:59
非捕捉括号,就是变成一个项,但是又不存入$n中。
作者: speed0424 发布时间: 2010-10-13
不要用 my $ifconfig = `ifconfig -a`;
作者: flw 发布时间: 2010-10-13
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28