我还是 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
然后我很难接受这个,但是它不能正常工作,因为它没有捕获我的 URL,我不确定为什么。
^(.*?(404|410))\/\d+$
https://regex101.com/r/tD2sX0/4
我们很乐意接受一点帮助。
最佳答案
您可以在否定前瞻中添加异常:
^(.*?)\/(?!(?:404|410)$)\d+$
参见 regex demo
前瞻对 \d+
(=1 位或更多位)施加了限制,因此数字序列不能是 404
或 410
。
我正在使用一个非捕获组来保持反向引用列表的清洁。字符串 anchor 的 $
结尾在前瞻中非常重要,因为它仅将排除的数字限制为 404
和 410
(否则,它还会排除 41004
)。
关于正则表达式匹配除 404 和 410 以外的任何以数字结尾的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33498149/