1

我想通过使用正则表达式替换Perl 中的<and>和except&lt;和标签:&gt;<img src=""><a href="">text</a>

$a= qq~<a href="">test</a> <script> <img src="">~;
$a =~ s/<([^img|a])/&lt;$1/ig;
$a =~ s/([^<a(.*?)])>/$1&gt;/ig;
print "\n$a\n";

但它取代了内部'>'也喜欢

<a href=""&gt;test&lt;/a> &lt;script&gt; <img src=""&gt;
4

1 回答 1

1

您可以尝试这种简单的方法:

$a =~ s/</&lt;/g;
$a =~ s/>/&gt;/g;
# Fix "a" & "img"
$a =~ s/&lt;a\s(.*?)&gt;(.*?)&lt;\/a&gt;/<a $1>$2<\/a>/g;
$a =~ s/&lt;img\s(.*?)&gt;/<img $1>/g;

笔记:

[^img|a]not i,m,g,a or |

如果您需要查找<不跟随imga- 使用负前瞻:

/<(?!img|a)/
于 2013-07-23T11:43:38.460 回答