仍然是Regex的新手,我想知道你是怎么做到的。
我们的想法是匹配任何以/23.../(数字)但不是/410/
和/404/
目的是将其放在.htacces中,以便将旧页面重定向到410.
每个旧页面的形状为http://www.blabla.com/something/2/ http://www.blabla.com/something/3/等......
所以我已经完成了正在使用的正则表达式,除了它包括404和410而且我不能允许。
^(.*?)\/\d+$
https://regex101.com/r/tD2sX0/2
我对此问题很难,但这不能正常工作,因为它没有捕获我的网址而且我不确定原因。
^(.*?(404|410))\/\d+$
https://regex101.com/r/tD2sX0/4
很乐意接受一些帮助。
答案 0 :(得分:1)
您可以在负面预测中添加例外:
^(.*?)\/(?!(?:404|410)$)\d+$
请参阅regex demo
前瞻对\d+
(= 1位或更多位)应用限制,以使数字序列不能为404
或410
。
我正在使用非捕获组,以便保持后引用列表清洁。字符串锚点的$
结尾在前瞻中非常重要,因为它只会将排除的数字限制为404
和410
(否则,它也会排除41004
)。