2010-03-17 96 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