2010-04-14 37 views
0

這個很簡單。這個真正簡單的RegEx表達式有什麼問題?

我試圖創建一個正則表達式,這將導致成功匹配時對以下文本

/default.aspx? 

,所以我嘗試以下...

^/default.aspx$ 

,它無法匹配它。

有人可以幫忙嗎?

(我猜測我搞砸了\和輸入表達式中的?)。

回答

2

問題出在.(點),這是一個通配符, 您必須像\.那樣轉義它。

此外,由於URL末尾有?,因此$(輸入結束)位於正則表達式中,因此它不匹配。

正確的正則表達式應該是^/default\.aspx(\?.*)?$

+1

您需要添加\?在$之前或它不匹配。 '?'也是一個保留字符(意思是前一個事物的零個或一個),它也應該用一個反斜槓進行轉義。 – James 2010-04-14 02:28:36

+0

ooho。我並不太離譜。所有那些括號內的東西總是讓我難住,也。你能解釋一下(?。*)的作用嗎?我猜((。*))?說括號裏的東西..好吧,它是可選的? – 2010-04-14 03:07:37

+0

@Pure:實際上,'(?。*)'是一個語法錯誤。它應該是'(\?。*)':一個問號跟零個或多個任何東西。正如你所說,最後的問號使得整個組是可選的。 – 2010-04-14 03:14:47

1

在^/Default.aspx的$手段結束的$「字符串的結尾匹配」,但該字符串你與搜索結束「?」。

1

也許這樣的事情是比較合適的:

^/default\.aspx(\?.*)?$ 

這將匹配default.aspx,帶有可選?whatever-else-that-comes-after

+0

如果您正在執行諸如「。*」之類的操作,是否有任何理由將$保留在正則表達式的末尾? – Davis 2010-04-14 02:29:14

+0

這取決於正則表達式的實現,因爲通常'。'不匹配新行。 – James 2010-04-14 02:31:31

+0

這將解釋我錯過了什麼。我通常只匹配單行。 – Davis 2010-04-14 02:32:26

相關問題