【问题】
需要把对应的html代码:
<h1>h1 content</h1>
<div>
div test
</div>中的标签用perl的正则去替换掉。
【解决过程】
1.参考了:
最后写出如下代码:
#!/usr/bin/perl -w
=File decalaration
Function:
求perl过滤html标签的函数,或正则表达式
http://zhidao.baidu.com/question/510205886.html
Author: Crifan Li
Version: 2012-12-24
Contact: admin at crifan dot com
=cut
use warnings;
$origHtml = <<END;
<h1>h1 content</h1>
<div>
div test
</div>
<invalidTag> invalid tag test </invalid>
END
print("origHtml=", $origHtml);
$filteredHtml = $origHtml;
$filteredHtml =~ s/<(\w+?)>(.+?)<\/\1>/$2/sg;
#$filteredHtml =~ s/<\w+?>(.+?)<\/\w+?>/$1/sg; # will also remove invalid tag
print "after remove tag=",$filteredHtml;
# h1 content
# div test
# <invalidTag> invalid tag test </invalid>
【总结】
Perl中的正则:
1.替换
$variable = "xxx"; $variable =~ s/yyy/zzz/flags;
注意:字符串变量必须先初始化,否则u会报错:
| Use of uninitialized value $_ in substitution (s///) at xxx.pl line 25. |
flags:就是正常的参数,详见:Perl正则表达式
2.后向引用
使用$N,其中N=1,2,3,…,对应着组的编号
3. 总之,Perl中的正则,还是不好用啊。目前觉得,比较好用的正则,是C#,Python等,功能丰富,方便使用。
转载请注明:在路上 » 【已解决】Perl中的正则表达式的替换和后向引用