我有这样的网址:
http://www.url.me/en/cats/dogs/potatoes/tomatoes/
我需要替换前两个REST参数来获取结果URL:
http://www.url.me/FIRST/cats/dogs/potatoes/tomatoes/
我试过这个正则表达式\/([^/]+)\/
,但它在CF中没有按预期工作:
<cfset ret.REDIRECT = reReplace(currentUrl, "\/([^/]+)\/", "FIRST", "all") />
你对正则表达式和cf代码有什么建议?
谢谢。
答案 0 :(得分:2)
首先,您不需要在正则表达式中转义/
。 (有时你会看到它被转义,例如在JavaScript正则表达式文字中,但这是JS方面被转义,而不是正则表达式。)
然而,即使有了这种改变,它也不会做你想做的事情 - 你将会取代所有其他/合格的部分,而不仅仅是主持部分之后的第一部分。
要做你想做的事,请使用以下内容:
reReplace(CurrentUrl, "^(https?://[^/]+/)[^/]+/", "\1FIRST/")
^
将替换锚定在输入的开头。(..)
部分捕获协议和主机名,以便可以在替换字符串中使用\1
重新插入它们。[^/]+/
是抓取请求uri的第一部分并将其替换为替换字符串中的FIRST/
。(如果不需要,可以省略尾随/
,或使用(?=/)
断言它在那里而不需要将其放在替换方。)