匹配"不是一个词"在URL?

时间:2015-07-23 18:09:47

标签: regex url-rewrite-module

我试图抓住:

http://anydomain/MYDIR/filename.aspx

http://anydomain/subdir/MYDIR/filename.aspx

(基本上,规则是捕获第一个,然后重定向到第二个 - 我已经移动了文件 - 任何人都将旧文章加入书签,我希望它们被带到新版本。)

我所做的一切都是捕捉两者,并产生一个有趣的重定向循环。像GRR一样有趣,不像YAY那样有趣。不可否认,我在RegEx之外的基础已经很糟糕,十年来我需要它两次,并且很快就忘记了一切。我最接近的是这样的:

^.*!NEWDIR\/MYDIR\/filename\.aspx$

但它似乎没有验证。我相信它是我的"分组"在正则表达式NEWDIR中,它是否认为我只是没有N和EWDIR应该在那里?我怎样才能把它带到" 而不是"完全NEWDIR

1 个答案:

答案 0 :(得分:1)

试试这个:

^.*(?<!NEWDIR)\/MYDIR\/filename\.aspx$

这是使用负面后卫。这里的目标是计算一个不是由另一个字符串继续的字符串。

Here是一个有效的例子。有关 lookbehind 的详细信息,请查看此page