rlb*_*ond 5 regex perl multiline
我需要编写一个Perl脚本来读取文件,并删除<>内的任何内容,即使它们位于不同的行上.也就是说,如果输入是:
Hello, world. I <enjoy eating
bagels. They are quite tasty.
I prefer when I ate a bagel to
when I >ate a sandwich. <I also
like >bananas.
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
Hello, world. I ate a sandwich. bananas.
Run Code Online (Sandbox Code Playgroud)
如果文本与正则表达式在一行,我知道如何做到这一点.但我不知道怎么用多行来做.最终我需要能够有条件地删除模板的一部分,这样我就可以为配置文件生成参数化文件.我认为perl会是一种很好的语言,但我仍然掌握它.
编辑:还需要超过1个<>的实例
您可能想要查看Perl模块Text :: Balanced,它是核心发行版的一部分.我认为这对你有帮助.一般来说,如果主题文本可能有一组内部分隔符,那么人们想要避免正则表达式做这种事情,它可能会变得非常混乱.
在Perl中:
#! /usr/bin/perl
use strict;
my $text = <>;
$text =~ s/<[^>]*>//g;
print $text;
Run Code Online (Sandbox Code Playgroud)
正则表达式替换以<通过第一个>(包括)开头的任何内容,并将其替换为空.g是全球性的(不止一次).
编辑:纳入了Hynek的评论和混乱