我有一些字符串,我需要在此字符串中的第一个空白行后删除所有字符串。
我试过用这个
$string = ~s/\^\s*$.*//
但是这个表达式删除了字符串中的所有字符!
答案 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;