regex - 这两种 Nginx 正则表达式模式有什么区别?
问题描述
以下两种 Nginx 正则表达式模式有什么区别?
location ~* /v1/path1/(.*)/path3
和
location ~* /v1/path1/(.*?)/path3
区别在于?
正则表达式。
我打算做的就是匹配/v1/path1/*/path3
. 我测试了两者,它们似乎都有效。
解决方案
捕获的贪婪。两个正则表达式都将匹配相同的字符串,但在每种情况下捕获可能不同。
例如,字符串/foo/v1/path1/bar/path3/path3
将匹配两个位置。
在第一种情况下,$1
等于bar/path3
因为捕获是贪婪的并且吸收了第一个“path3”,因为还有另一个满足正则表达式。
在第二种情况下,$1
等于bar
因为捕获不是贪婪的,并且吸收了最小量的文本以满足正则表达式。
推荐阅读
- sql - oracle sql 表创建错误 %s: 标识符无效”
- python - 如何使用 Vosk 离线语音识别(或任何其他快速离线语音识别器)为虚拟助手设置唤醒词
- eclipse - 在 spring-tool-suite 4.11 中显示绿色 junit 测试名称
- firebase - Flutter:将一组 Firestore 流呈现为列表视图
- python - 基于节点属性对 NetworkX 图的节点进行排序
- azure - 卡在 Azure DevOps Pipeline 上的 dotnet 发布步骤
- python - Pandas pivot_table:“合并”列值
- python - ImportError:libopencv_hdf.so.4.5:无法打开共享对象文件:没有这样的文件或目录
- flutter - 用颤振中的空间模拟列跨度
- javascript - 如何在 express js 中删除请求 json 属性