gpt4 book ai didi

正则表达式 - 用交替字符替换字符

转载 作者:行者123 更新时间:2023-12-04 04:47:43 24 4
gpt4 key购买 nike

我对正则表达式知之甚少,恐怕无数的教程对改善我的情况并没有多大作用。
我想要的是取一个字符串并用交替字符替换特定的分隔符,从而创建一个名称/值对。
这是用于 SEO url 重写目的 - 使用 IIS Rewrite。

例如,如果我有以下 URL:

http://mydomain.com/mypage_foo_bar_megafoo_freebar_nofoo_closedbar.htm

我需要使用正则表达式将其重写为:
http://mydomain.com/mypage.cfm?foo=bar&megafoo=freebar&nofoo=closedbar

我已经尝试了一段时间,但一无所获-有人可以帮助我吗?

谢谢

编辑:我意识到这不是一个好的 URL 结构的一个很好的例子 - 它是一个遗留系统,我不允许提供替代方案......唉。

最佳答案

如果您只是替换下划线,您可能可以在没有正则表达式的情况下执行此操作。通过使用 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}

该系统似乎是为已知的获取请求而设计的,而不是任何随机页面和获取请求的数量。该指南中没有提及如何应用重复模式。

关于正则表达式 - 用交替字符替换字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17929283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com