我正在使用正则表达式来重写某些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字符串来处理多个捕获。如何编写替换字符串以替换所有捕获?
答案 0 :(得分:0)
您需要将以下正则表达式与捕获组匹配
^(.*?)&(?!amp;)(.*)$
并使用以下字符串进行替换:
/$1&$2
整体重写规则可能如下所示:
RewriteRule ^(.*?)&(?!amp;)(.*)$ /$1&$2 [L]