regex - 正则表达式截断 nginx 上的字符串
问题描述
我正在尝试使用 nginx 缓存功能,但是我们有使用纬度和经度的端点,因此为了提高缓存命中率,我们必须截断纬度和经度。
我创建了一个地图来忽略最后两个纬度数字。问题是地图不起作用,它总是返回原始纬度(45.45452)。
考虑 $arg_latitude 为 45.45452,预期结果为 45.45。
map $arg_latitude $rounded_latitude {
default $arg_latitude;
~\d+\.\d\d $arg_latitude;
}
知道为什么不工作吗?
解决方案
您的结果map
始终是 的原始值$arg_latitude
,因为这是您在右侧列中插入的值。
您需要在正则表达式中添加一个捕获并将其用作新值。
例如:
map $arg_latitude $rounded_latitude {
default $arg_latitude;
~^(?<rounded>\d+\.\d\d) $rounded;
}
建议使用命名捕获,因为数字捕获可能不在$rounded_latitude
评估点的范围内。
有关更多信息,请参阅此文档。
推荐阅读
- powerbi - Power BI - 如何在不更改其他图表和卡片的情况下过滤卡片
- go - go-lang如何获取矩阵的维数?
- python - 如何使用 scrapy 在 errback 中获取原始请求 url
- unit-testing - 如何使用 H2 内存数据库编写单元测试
- xaml - XAML ListView 数据绑定到 DateTime
- django - 如何在 view.py 中定义一个没有查询集和序列化程序的类
- javascript - 动态的对于新闻行情
- javascript - 导入的打字稿类的实例化似乎不起作用
- asp.net - 获取 EF 核心中的所有嵌套子类别
- haskell - 是什么使定义受到单态性限制?