2009-08-23 42 views

回答

1

這個正則表達式會做的伎倆:

^([^?]+)

就拿第二擷取組從比賽(第一個捕獲組如果匹配,它總是原始字符串本身)。

2

ColdFusion中,你可以使用正則表達式替換:

myURL = REReplace(myURL,"\?.*$","") 

這將使你在問號前的一切。

10

你當然可以使用正則表達式這一點,但它會更有效地使用

listfirst(theurl, '?')

其認定由問號分隔列表的第一部分。

+1

好主意..非常coldfusion-y的方式做到這一點! – Kip 2009-08-24 02:02:47

+0

+1爲一個很好的簡單解決方案。 CF中的列表*()函數在以非顯而易見的方式使用時功能非常強大。 – ale 2009-08-25 02:14:49

+0

我同意,我總是期待在正則表達式之前列出函數。 – 2009-08-27 00:53:12

0

@Ben Doom:如果我沒有弄錯,#url#變量是一個複雜的對象,不能被視爲字符串或列表。我在查詢字符串之前的一切方法是:

<cfset myURL = "http://" & #cgi.HTTP_HOST# & #cgi.SCRIPT_NAME# /> 
+0

很明顯,我不是故意在url範圍上嘗試這個操作。我不假思索地使用'url'來表示一個變量來保存有問題的URL。 – 2009-08-26 01:12:57

+0

是的,你知道在我寫了我的答案後,我發現你指的是一個變量,其中存有url,而不是範圍本身。很好的答案,但我不會想到使用這種技術。 – 2009-08-26 11:18:18