2

正規表現を使用して一部の URL を書き換えています。URL 内のすべてのアンパサンド & を & に置き換える必要があります。ただし、アンパサンドが既に & を開始している場合はそうではありません。発生。だから私はこれで終わった:

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

変換したもの:

    Bob_&_Carol.htm  

の中へ:

    Bob_&_Carol.htm

ただし、これは最初のアンパサンドでのみ機能し、複数のアンパサンドでは失敗し、最初の出現のみを変換します。

    Bob_&_Carol_&_Alice.htm 

の中へ:

    Bob_&_Carol_&_Alice.htm

そこで、複数のアンパサンドを見つけるように一致式を変更しました。

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

しかし、複数のキャプチャを処理するために置換文字列を記述する方法がわかりません。すべてのキャプチャを置き換えるために置換文字列を作成するにはどうすればよいですか?

4

1 に答える 1

1

次の正規表現をキャプチャ グループと一致させる必要があります

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

置換には次の文字列を使用します。

/$1&$2

全体的な書き換えルールは次のようになります。

RewriteRule ^(.*?)&(?!amp;)(.*)$ /$1&$2 [L]
于 2013-04-23T07:53:36.593 に答える