2012-03-09 77 views
1

僅使用textpad,正則表達式會找到&安培;或&的href內,並暫時替換它們(儘管我知道正確的url編碼會讓它們作爲實體保留)..使用一個可以在TIDYING之後使用的鍵。我現在發現的第一個實例,但帶有多個&的url參數沒有被正確清理,並且沒有考慮與& amp正確編碼的項目;已經。textpad正則表達式替換url鏈接中的所有&符

這是我有:

FIND WHAT: \(<a href="[^"]+?\)& 

REPLACE WITH: \1-AMP- 

我要的是什麼,將採取這樣的:

<A HREF="http://domain/boo.php?dross1=foo&dross2=bar&amp;dross3=baz&dross4=alpha&dross5=beta&amp;dross6=delta"> 

,並把它變成這樣:

<A HREF="http://domain/boo.php?dross1=foo-AMP-dross2=bar-AMPENT-dross3=baz-AMP-dross4=alpha-AMP-dross5=beta-AMPENT-dross6=delta"> 

這樣我可以快速搜索和替換以將它們還原回其初始狀態,因爲這僅用於驗證,而不是用於保存。

謝謝!

+0

我認爲縮小隻替換鏈接內的&符號是有問題的 - 它可以用lookahead來完成,但我不知道textpad是否支持這些。 – 2012-03-09 02:09:07

+0

如果簡化它,我可以做兩個sep動作嗎?但是,兩者都必須只是在鏈接,否則內聯js(嘆了口氣)得到&& biffed,以及每一箇中性; – HansOg 2012-03-09 03:27:57

回答

0

我不知道如何做到這一點的textpad來實現,但在PowerShell中可以這樣做的:

$String ='<A HREF="http://domain/boo.php?dross1=foo&dross2=bar&amp;dross3=baz&dross4=alpha&dross5=beta&amp;dross6=delta">' 
$String -replace '(?<=<a[^<>]*href="[^"<> ]*?)&amp;', "-AMP-" 

產量

<A HREF="http://domain/boo.php?dross1=foo&dross2=bar-AMP-dross3=baz&dross4=alpha&dross5=beta-AMP-dross6=delta"> 

解剖正則表達式:

  1. 環顧四周(?< = ....)首先驗證您是主播標記
  2. 移動通過該標籤,直到它找到HREF名
  3. 通過非串動作」,<,>,空格字符尋找&
  4. 然後所有&字符串被發現和更換。