G'day,为什么在这个正则表达式中匹配空行?
我正在使用以下Perl片段从Solaris集群命令中提取输出。
open(CL,"$clrg status |");
my @clrg= grep /^[[:lower:][:space:]]+/,<CL>;
close(CL);
我碰到下面当我打印的数组元素的BTW @clrg“=>”和“< =”行分隔符是由我打印语句插入内容:
=><=
=>nas-rg mcs0.cwwtf.bbc.co.uk No Online<=
=> mcs1.cwwtf.bbc.co.uk No Offline<=
=><=
=>apache-rg mcs0.cwwtf.bbc.co.uk No Online<=
=> mcs1.cwwtf.bbc.co.uk No Offline<=
=><=
当我用下面的Perl片段替换它时,空行不匹配。
open(CL,"$clrg status |");
my @clrg= grep /^[[:lower:][:space:]]{3,}/,<CL>;
close(CL);
而且我得到以下几点:
=>nas-rg mcs0.cwwtf.bbc.co.uk No Online<=
=> mcs1.cwwtf.bbc.co.uk No Offline<=
=>apache-rg mcs0.cwwtf.bbc.co.uk No Online<=
=> mcs1.cwwtf.bbc.co.uk No Offline<=
简单的问题是,为什么?
顺便说一句在第二个Perl片段中使用{1,}还匹配空白行!
任何建议感激地收到!
欢呼声,
@Andomar,这些POSIX角色类不能单独存在;它们必须在另一对方括号内使用,即[[:space:]]。 – 2009-05-20 12:59:04
谢谢,已在问题中更正 – Andomar 2009-05-20 13:16:44