用于多行文件的perl正则表达式

时间:2014-03-03 14:05:42

标签: regex perl

我的文件中的模式如下所示:

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

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

我需要regexp,它将整个模式转换为从db

开始的变量

我试图匹配模式,直到空行显示

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

P.S。我知道正则表达式完全错误,但我对正则表达式并不擅长

1 个答案:

答案 0 :(得分:3)

如果您想使用空行作为记录分隔符,我建议您使用paragraph mode吗?

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

使用空字符串是一种特殊情况,如上面链接的文档中所述:

  

将$ /设置为“\ n \ n”意味着与设置为“”略有不同,如果文件包含连续的空行。设置为“”会将两个或多个连续的空行视为一个空行。设置为“\ n \ n”将盲目地假设下一个输入字符属于下一个段落,即使它是换行符。