正则表达式替换所有捕获事件

时间:2013-04-23 07:32:00

标签: regex iis url-rewriting

我正在使用正则表达式来重写某些URL。我需要更换所有的&符号&在带有& amp;的URL中但是当&符已经开始& amp;发生。所以我最终得到了这个:

search: (^[^&]*?)&((?!amp;)[^W]*?.htm)
replace: $1&$2

改变了:

    Bob_&_Carol.htm  

成:

    Bob_&_Carol.htm

但是这仅适用于第一个&符号,并且在多个&符号上失败仅转换第一次出现。

    Bob_&_Carol_&_Alice.htm 

成:

    Bob_&_Carol_&_Alice.htm

所以我修改了匹配表达式以找到多个&符号:

    ^(?:([^&]*?)&(?!amp;))*([^W]*?.htm)

但我不知道如何编写Replace字符串来处理多个捕获。如何编写替换字符串以替换所有捕获?

1 个答案:

答案 0 :(得分:0)

您需要将以下正则表达式与捕获组匹配

^(.*?)&(?!amp;)(.*)$

并使用以下字符串进行替换:

/$1&$2

整体重写规则可能如下所示:

RewriteRule ^(.*?)&(?!amp;)(.*)$ /$1&$2 [L]