获取子字符串直到第一个问号

时间:2014-12-31 00:31:26

标签: regex coldfusion coldfusion-11

我有一个字符串,我存储在名为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()语句,以便它只匹配第一个问号。

2 个答案:

答案 0 :(得分:10)

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

ListFirst(OriginalURL,'?')

在你之前会给你一切吗?

ListLast(OriginalURL,'?')

在你之后会得到一切吗?

答案 1 :(得分:2)

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

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

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

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

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

希望这有帮助。