2012-03-09 60 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. 然后所有&字符串被发现和更换。