小编jan*_*jan的帖子

在 mutiline perl 正则表达式中匹配和删除换行符

我知道这个网站上有很多关于将多行正则表达式与 perl 匹配的问题,但是,我仍然无法弄清楚如何执行以下操作。因此,任何帮助或相关问题的链接将不胜感激。

我有一个input.txt由字段标签(由反斜杠标识)和字段内容构成的文本文件,如下所示:

\x text
\y text text
text text
\z text
Run Code Online (Sandbox Code Playgroud)

字段内容可以包含换行符,但为了进一步处理,我需要确保所有字段内容都在一行上。以下显然能够跨多行正确匹配,但是,它不会删除它,而是重新插入它。

#!/usr/bin/perl

$/ =undef; 

{
open(my $in, "<", "input.txt") or die "impossible: $!";
open(my $out, ">", "output.txt") or die "Can't open output.txt: $!"; 

while (<$in>) {
    s/\n([^\\])/ \1/g; # delete all line breaks unless followed by backslash and replace by a single space
    print $out $_ ; 
    }       
}
Run Code Online (Sandbox Code Playgroud)

它将空格添加到前面(所以我知道它正确地找到了它),但仍然保留了换行符。输出看起来像这样:

\x text
\y text text
 text text
\z text
Run Code Online (Sandbox Code Playgroud)

而我希望得到这个:

\x text
\y …
Run Code Online (Sandbox Code Playgroud)

regex perl multiline multilinestring

1
推荐指数
1
解决办法
688
查看次数

标签 统计

multiline ×1

multilinestring ×1

perl ×1

regex ×1