0

我试图用我面临的问题替换标题标签是<h*>当 我有一个标题标签时标签没有环绕,它从一行开始并在另一行结束,例如。<center><h*>.....</h*></center><center>

<h3> Spotting the
    Pileated
    HummingBird in
    the wild </h3>

我想用标签替换标题<center><h*> .. </h*></center>标签。

这就是我正在尝试的工作,它的标题标签在同一行开始和结束,但不是多行。

while (<>){
           $_ =~ s/^\<h(.)>\s*(.*)\s*<\/h(.)>/<center><h$1>$2<\/h$3><\/center>/g;
       print $_;
}
4

1 回答 1

0

好吧,我必须说使用 XML Parser 可以让您的生活更加轻松。但是,如果您考虑应用多条正则表达式,找到一个正则表达式应该不会那么难。我用下面的代码进行了测试,它有效。

my $str = '<h3> Spotting the
    Pileated
    HummingBird in
    the wild </h3>';

$str =~ s/(<h\d>[\n\s\w]*<\/h\d>)/<center>$1<\/center>/mg;
                                                       ^
                                                       |------ for multiline regex   
print $str;

如您所见, using/m将让您编写一个匹配多行的表达式。希望这会有所帮助。

[\n\s\w]*这里只是基于您给定的示例文本。您可能需要对其进行修改以满足您的原始要求。

于 2013-11-05T03:39:35.400 回答