[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]
使用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]