2013-07-23 54 views
1

我想更換<>&lt;&gt;除了在Perl <img src=""><a href="">text</a>標籤通過使用正則表達式:我怎麼能代替「<」 and 「>」與「<」和「>除了<img src="">和<a href="">text</a>標籤在Perl

$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; 
+2

知道你在這裏試圖解決什麼問題會很有趣,因爲我懷疑你試圖得到答案可能不是解決原始問題的最佳方案。 – Spudley

回答

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)/ 
+3

如果輸入字符串已經包含「<」實體,則失敗。 – Spudley

+0

非常感謝!有用! – manu

相關問題