关于正则表达式中的flags部分-g

[size=medium]语法是这样:
使用RegExp的隐式构造函数,采用纯文本格式:/pattern/[flags]。
flags部分设置正则表达式的的标志信息,这个标志可以是g,m,i的组合,
g的作用是这样的:
g是全局标志。如果设置了这个标志,对某个文本执行搜索和替换操作时,将对文本中所有匹配的部分起作用。如果不设置这个标志,则仅搜索和替换最早匹配的内容

重点:经过测试,这个g只在文本搜索和替换操作时才有效,看下面

1.sar 1 10
SunOS HAZZ-PS-SV002-DNS-Beihuan 5.10 Generic_127111-09 sun4u 11/03/2010

11:35:57 %usr %sys %wio %idle
11:35:58 14 12 0 75
11:35:59 14 15 0 72
11:36:00 15 13 0 73
11:36:01 13 11 0 77
11:36:02 14 14 0 73
11:36:03 14 12 0 75
11:36:04 14 13 0 74
11:36:05 14 12 0 75
11:36:06 14 13 0 74
11:36:07 13 12 0 76

Average 13 12 0 74
现在需要把CPU的平均空闲率匹配出来,记过计算,CPU的平均利用率也可以出来
这个正则表达式比较简单
var output='';
input=input.replace(/(^\s*|\s*$)/gi,'');
[color=orange]var reg=/Average\s+\d+\s+\d+\s+\d+\s+(\d+)/gmi[/color]
while(reg.exec(input)!=null)
{
output+=RegExp.$1+'\n'
}
出来的结果是74,没错
现在假设如果这个正则表达式匹配出两个值,如
Average 13 12 0 50
Average 13 12 0 74
这样子的形式
只想取出第一个的值,怎么取出呢?
开始是这样想的,按照g的解释,是不是在匹配的时候不设置这个g标志,在匹配的时候不是会匹配最早匹配的内容,可是发现这样不行,一把标志去掉,使用的Rhino工具就会卡死,具体不明白,但是这个g在文本搜索和替换操作时是有效的
随便测试下
aaaaa22bbbbb
写个表达式
var sep = '__';
var output = '';
input = input.replace(/(^\s*)|(\s*$)/g, '');
input = input.replace(/2/, 't');
output=input
这里的input = input.replace(/2/, 't')用g和不用g是不一样的,用g两个都被替换了,不是只替换第一个
换另一种方法实现只匹配出第一个匹配到的值
使用if代替while
var output='';
input=input.replace(/(^\s*|\s*$)/gi,'');
[color=orange]var reg=/Average\s+\d+\s+\d+\s+\d+\s+(\d+)/gmi[/color]
if(reg.exec(input)!=null)
{
output+=RegExp.$1+'\n'
}
[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值