Perl:如何在第一个空行后删除所有内容?

时间:2014-10-03 15:58:17

标签: regex perl

我有一些字符串,我需要在此字符串中的第一个空白行后删除所有字符串。

我试过用这个 $string = ~s/\^\s*$.*// 但是这个表达式删除了字符串中的所有字符!

1 个答案:

答案 0 :(得分:4)

使用以下内容:

  • \h以匹配水平间距,
  • \n以匹配换行符
  • /m允许^在任意行上匹配的修饰符
  • /s修饰符,以便任何字符都匹配换行符

正如所示:

use strict;
use warnings;

my $string = do {local $/; <DATA>};

$string =~ s/^\h*\n.*//ms;

print $string;

__DATA__
Hello World
Second Line

New Paragraph
another line
final line

输出:

Hello World
Second Line

附录

要将标题与正文分开,只需使用split

从技术上讲,模式应该只是/\n\n/,但考虑到问题的背景,我建议:

my ($header, $body) = split /\n\h*\n/, $string, 2;