首页 > 解决方案 > 这两种 Nginx 正则表达式模式有什么区别?

问题描述

以下两种 Nginx 正则表达式模式有什么区别?

location ~* /v1/path1/(.*)/path3

location ~* /v1/path1/(.*?)/path3

区别在于?正则表达式。

我打算做的就是匹配/v1/path1/*/path3. 我测试了两者,它们似乎都有效。

标签: regexnginxnginx-location

解决方案


捕获的贪婪。两个正则表达式都将匹配相同的字符串,但在每种情况下捕获可能不同。

例如,字符串/foo/v1/path1/bar/path3/path3将匹配两个位置。

在第一种情况下,$1等于bar/path3因为捕获是贪婪的并且吸收了第一个“path3”,因为还有另一个满足正则表达式。

在第二种情况下,$1等于bar因为捕获不是贪婪的,并且吸收了最小量的文本以满足正则表达式。


推荐阅读