0

我快要疯了。我正在尝试匹配所有以 ..html结尾的字符串,但不匹配以/index.html. 出于重写目的,您可能已经猜到了。(我正在使用 Nginx)

我试过这样的事情:

^(.*[^(\/index)])\.html$

^(.*)(?!index)\.html$

但这个点似乎总是吞噬了整个事情。

# Should match
/page.html
/folder/page.html

# Should not match
/page
/page/index.html
/index.html

为什么这不起作用?

4

3 回答 3

2

你没有说明你的,但许多正则表达式支持lookbehinds。在您的情况下可以用作:

(?<!index)\.html$
于 2013-05-22T23:09:20.927 回答
0

一种保证有效的相当简单的方法:

.*([^i].*|i[^n].*|in[^d].*|ind[^e].*|inde[^x].*|index.+)\.html

这将匹配所有.*\.html将匹配的内容,除非它以 index.html 结尾。

于 2013-05-22T23:29:03.537 回答
-1

怎么样

^([^(\/index)]*)\.html$

实际上,我认为这不会匹配/index/page.html

于 2013-05-22T23:16:23.030 回答