2014-03-03 51 views
0

我有看起來像這樣的文件模式:Perl的正則表達式多行文件

db::parameter nf 
     -data.   Value.  \ 
     -data2.   Value2.  \ 

db::parameter ww 
     -data1.   Value1.  \ 
     -data2.   Value2.  \ 

我需要的正則表達式我試圖以匹配其將整個圖案爲一個變量起價db

模式,直到空行會顯示出來

 while(<$infile>){ 
       chomp; 
       If($_=~/db:parameter\s+$){ 
          print $_;} 

Ps我知道正則表達式是完全以錯誤的,但我不是那麼好於正則表達式

回答

3

如果你想用一個空行作爲記錄分隔符,我可能會建議使用paragraph mode

$/ = "";  # set input record separator to empty string 
while (<>) { # proceed as usual 

使用空字符串是一個特例,如文檔中描述的上面鏈接:

設置$ /成「\ n \ n」意味着什麼比設定爲「」略有不同,如果該文件包含連續的空行。設置爲「」將把兩個或更多個連續的空行視爲一個空行。設置爲「\ n \ n」將盲目地假定下一個輸入字符屬於下一段,即使它是換行符。

+0

也許'本地'.. –

+0

@mpapec通常我會建議,但我不知道上下文,也許有其他循環。 – TLP

+0

嗯,它的工作!謝謝 – PYPL