2010-03-17 110 views
1

我一直想弄清楚如何編寫這個正則表達式。它將用於IIS 6的模塊ISAPI_Rewrite,用於進行URL重寫。正則表達式,如果不包含匹配

我希望網址/hg/<parameter>可以匹配,因此可以重寫爲/hg/hgwebdir.cgi/<parameter>

我用^/hg/(.*)匹配了它。

我的問題是,如果使用URL /hg/hgwebdir.cgi/<parameter>,正則表達式應該不匹配。通過這個URL使用上面的正則表達式,將重寫爲/hg/hgwebdig.cgi/hgwebdig.cgi/<parameter>,這是不正確的。

你能幫我創建匹配模式嗎?

回答

3

你可以使用一個negative lookahead做到這一點:

"^/hg/(?!hgwebdir.cgi)(.*)" 

http://www.regular-expressions.info/tutorial.html是正則表達式一個偉大的教程。 =)

+0

非常感謝。 – 2010-03-17 09:25:17

+0

但是,在查找正則表達式的語法時,請務必獲取正確的正則表達式方言的信息! perl,java,.NET和許多其他語言/程序都有正則表達式,並且有許多小而重要的區別。例如,最後一次我需要一個負面預測,它在vim中,表達式看起來與Jens在這裏寫的很不一樣。 – 2010-03-17 09:31:07

+0

@Carl:我鏈接的網站涵蓋了一些不同的正則表達式實現的怪癖。不是vim,雖然=) – Jens 2010-03-17 09:40:58

相關問題