以下两个Nginx regex模式有什么区别?
location ~* /v1/path1/(.*)/path3
和
location ~* /v1/path1/(.*?)/path3
区别在于正则表达式中的?
。
我要做的就是匹配/v1/path1/*/path3
中的所有路径。我对它们都进行了测试,而且它们似乎都可以工作。
答案 0 :(得分:0)
捕获的贪婪。两个正则表达式都将匹配相同的字符串,但是每种情况下的捕获都可能不同。
例如,字符串/foo/v1/path1/bar/path3/path3
将匹配两个位置。
在第一种情况下,$1
等于bar/path3
,因为捕获是贪婪的,并且吸收了第一个“ path3”,因为还有一个满足正则表达式。
在第二种情况下,$1
等于bar
,因为捕获不是贪婪的,而是吸收文本的最小数量以满足正则表达式。