我正在尝试将标头标记<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 $_;
}
答案 0 :(得分: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;
正如您所看到的,使用/m
将允许您编写一个匹配多行的表达式。希望这会有所帮助。
[\n\s\w]*
此处仅基于您提供的示例文字。您可能需要对其进行修改以满足您的原始要求。