正则表达式匹配模式A而不是模式B.

时间:2012-09-06 17:36:39

标签: .net regex redirect

背景:

我有一个与正则表达式一起使用的Url重定向系统。

具有以下格式的网址:http://www.company.com/ {任意数量的父网页} / parentX / {any page} .aspx

需要重定向到:http://www.company.com/parentY/parentX/ {page} .aspx

换句话说,所有具有直接父X和任意数量祖父母页面的页面现在都位于parentY / parentX下。

我可以轻松编写正则表达式,以匹配http://www.company.com/ {任意数量的父页面} / parentX / {any page} .aspx的URL。但是,这也会匹配我重定向到的页面(导致重定向循环)。因此,我的表达式需要与模式http://www.company.com/parentY/parentX/ {page} .aspx

不匹配

有什么想法吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

#http://www.thecompany.com/(?!parentY).*/parentX/[^/].aspx#

我正在使用负前瞻断言。 (?!...)是一个零宽度断言,可确保内部的正则表达式在此起始位置不匹配。不知道你在写什么语言,我不确定你是否可以这样做,或者它是否可以变得更加漂亮(例如,whatabout http://www.thecompany.com/parentY/parentZ/parentX?) - 但这应该适用于你的情况在这里给出了它。