如果您只是替换下划线,您可能可以在没有正则表达式的情况下执行此操作。通过使用replaceFirst()
您使用的任何语言的方法。使用正则表达式,您只会检测下划线并替换它们,与此相同。就像是;
myURL = myURL.replaceFirst("_",".cfm?");
while(myURL.contains("_"))
{
myURL = myURL.replaceFirst("_","=");
myURL = myURL.replaceFirst("_","&");
}
如果您需要一个更复杂的方法来防止在 URL 的其他部分检测到下划线,如果您概述了可能的组合是什么,我可能会帮助您找到一种合适的模式,以便在替换之前将域与参数分开。
根据下载页面,您是在.net 中执行此操作的吗?
http://www.iis.net/downloads/microsoft/url-rewrite
好的,我已阅读此页面;
http://www.iis.net/learn/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module
您将需要一个匹配字符串,例如;
^([a-zA-Z0-9\-]+)_([a-zA-Z0-9\-]+)_([a-zA-Z0-9\-]+).htm
还有一个替换字符串,例如
{R:1}.cfm?{R:2}={R:3}
然后,您需要重复此操作以增加变量对的数量,直到您认为合适,例如匹配字符串;
^([a-zA-Z0-9\-]+)_([a-zA-Z0-9\-]+)_([a-zA-Z0-9\-]+)_([a-zA-Z0-9\-]+)_([a-zA-Z0-9\-]+).htm
替换字符串;
{R:1}.cfm?{R:2}={R:3}&{R:2}={R:3}
该系统似乎是为已知的获取请求而设计的,而不是任何随机页面和获取请求的数量。该指南中没有提到如何应用重复模式。