我有一个字符串,我存储在名为OriginalURL
的变量中。它基本上是这样的:
<cfset OriginalURL = StructFind(GetHttpRequestData().headers, 'X-Original-URL')/>
它所做的就是检查浏览器中的URL并将其存储为值。典型的值类似于website.com/make/volvo/model/xc90?Page=2
我想要做的是从字符串的左边开始提取所有内容,直到它到达第一个?
问号。所以它只会提取这部分website.com/make/volvo/model/xc90
我不确定如何使用Regex执行Left()
语句,以便它只匹配第一个问号。
答案 0 :(得分:10)
对此的快速而简单的回答是只使用带有分隔符的列表函数,因为只能有一个。
ListFirst(OriginalURL,'?')
在你之前会给你一切吗?
ListLast(OriginalURL,'?')
在你之后会得到一切吗?
答案 1 :(得分:2)
ListFirst()
可能是最简单的方法。但是如果你想使用正则表达式,那么你可以尝试以下
REReplace(OriginalURL, "\?.*$", "")
将取代问号及其后的所有内容。您也可以使用REMatch()
,如下所示:
REMatch("^[^\?]*", OriginalURL)[1]
(REMatch()
返回一个数组,所以在这种情况下我们想得到该数组的第一个元素。)
希望这有帮助。