【发布时间】:2013-04-23 07:31:59
【问题描述】:
我正在使用正则表达式来重写一些 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)
但我不知道如何编写替换字符串来处理多个捕获。如何编写替换字符串来替换所有捕获?
【问题讨论】:
-
您使用哪种工具/语言进行搜索/替换?
-
IIS URL 重写模块将使用最终的正则表达式。我一直在使用名为 Rad Regex Designer 的免费工具进行测试。
-
而不是一个单一的正则表达式,它可以捕获多个带有 & 符号的组和每个组中的一些文本,您需要一个能够捕获一个 & 符号,但多次替换它的正则表达式。您应该使用带有参数指定的替换函数来替换所有出现的事件,或者使用 ReplaceAll 函数或类似的东西,这取决于您的语言(您使用什么语言)?
-
TY 我将尝试重新设计表达式。很抱歉,我无法更好地回答“哪种语言”的问题。我只是将搜索和替换表达式提供给 Microsoft IIS URL 重写模块。除了接受这两个表达式之外,它别无选择。通常我使用 C# 和 .NET 对象,这些表达式似乎遵循这些规则。
标签: regex iis url-rewriting