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