1

我有一个字符串,我存储在一个名为OriginalURL. 它基本上是这样的:

<cfset OriginalURL = StructFind(GetHttpRequestData().headers, 'X-Original-URL')/>

它所做的只是检查浏览器中的 URL 并将其存储为值。典型值类似于website.com/make/volvo/model/xc90?Page=2

我想要做的是从字符串的左侧开始提取所有内容,直到它到达第一个?问号。所以它只会提取这部分website.com/make/volvo/model/xc90

我不知道如何Left()使用正则表达式做一个声明,以便它只匹配第一个问号。

4

2 回答 2

10

对此非常快速和简单的答案是仅使用带有分隔符的列表函数,因为只能有一个。

ListFirst(OriginalURL,'?')

会给你之前的一切吗?

ListLast(OriginalURL,'?')

之后会得到你的一切吗?

于 2014-12-31T00:45:47.133 回答
2

ListFirst()可能是最简单的方法。但是如果你想使用正则表达式,那么你可以尝试以下

REReplace(OriginalURL, "\?.*$", "")

这将取代问号及其后面的所有内容。你也可以使用REMatch()如下:

REMatch("^[^\?]*", OriginalURL)[1]

REMatch()返回一个数组,所以在这种情况下,我们想要获取该数组的第一个元素。)

希望这可以帮助。

于 2015-01-03T16:26:01.083 回答