以开头但不包含的重复文本

时间:2016-09-18 23:07:13

标签: regex

我试图为重定向规则编写一个正则表达式,该规则将包含2010年到2012年的文件夹,但排除了两个非常具体的页面slu ..我的网址设置如下:

/ 2016/09/18 /我的页段塞/

这两页是:

/ 2011/04/11 /一些页/ / 2012/06/15 /另一页-2 /

我有类似^ / 2010 | 2011 | 2012 /.*的内容,它匹配那些年份开始的所有子目录,不知道如何为这些页面slu to做例外。

我可能需要一个负面的预测,比如(?!some-page | another-page-2),但不知道如何设置它。

2 个答案:

答案 0 :(得分:1)

为什么不写两个正则表达式?我的意思是,如果你想要,

^\/201[012]\/\d*\/\d*\/(?!(some-page|another-page-2))

对这些字符串中的任何一个做出否定的期待。

你必须非常具体地说明匹配字符串以及它们的页面位置。因为你需要确保像.*这样的其他东西不能吃掉你想要处理的东西。因此,您需要指定目录,以便它必须跟在slug页面后面,然后执行否定前瞻。你会注意到它会停止工作,如果你做.*(负向前瞻)这样的事情,因为.*会贪婪地匹配所有内容然后它会跟随$所以一切都很好而负面匹配不会打折字符串。

答案 1 :(得分:0)

所以这对任何有兴趣的人都有用:

^/(?!.*slug1/|.*slug2/)(?:2010|2011|2012)(.*)$

真正帮助我找到正确答案的是这个网站,可让您轻松测试正则表达式:https://www.debuggex.com/