用于匹配\ n和空格的正则表达式

时间:2010-12-01 13:21:22

标签: regex perl

我正在尝试在perl脚本中使用正则表达式来解析文件以匹配:

空格和“\ n”(换行符)交替出现 - 即首先我希望它匹配空格然后是“\ n”,然后是空格(在文件的新行上......等等)

感谢, -AD

4 个答案:

答案 0 :(得分:2)

你可以这样做:

if($file =~/ |(?: \n)+ ?/) {
        print $file." has the pattern\n";
}

使用的正则表达式是|(?: \n)+ ?匹配:

  • 单个空格或
  • 一个或多个space\n后跟一个 可选space

答案 1 :(得分:1)

试试这个:

(^ \n)+

答案 2 :(得分:0)

要匹配行的开头,请使用插入符号^

要匹配空格,您可以使用文字空间或任何空格,使用\s

sgm放在模式的末尾,例如/pattern/sgm会使其跨行匹配。

如果您有兴趣,可以在perldoc perlfaq6获取更多信息和一些示例。

答案 3 :(得分:0)

你说你希望你的模式中的第二个空格在新行上。现在你是否能够得到这个取决于你从哪里得到你的字符串(好吧,也许不是哪里,但我想你明白了我的观点)。如果您正在解析的数据是从文件中读取的,那么您必须以段落模式读取该文件(即每个段落而不是每一行将构成一个记录)。

假设您正在使用文件句柄FILE,请执行以下操作:

{
   local $/ = ""; # one paragraph constitutes one record
   while (<FILE>) {
      if (/ \n /) {
         print "Found one match!\n";
      }
   }
}

请注意,我使用的正则表达式模式没有考虑多次出现的空格 - 换行符空间,因为我不确定你究竟想要做什么。但无论如何,我的主要观点是使用

local $/ = "";

HTH