如何使用Google RE2正则表达式匹配URL路径
如何用RE2正则表达式匹配固定域名URL中的路径
适用的RE2正则表达式
^https://example.com/([\w-]+(?:/[\w-]+)*)/?(?:\?.*)?$
正则说明
^https://example.com/:精准匹配固定的协议与域名前缀,确保只处理目标URL([\w-]+(?:/[\w-]+)*):核心捕获组,提取我们需要的路径:[\w-]+:匹配单个合法目录名(包含字母、数字、下划线、连字符)(?:/[\w-]+)*:非捕获组,支持多级目录结构,允许0个或多个后续的/目录名层级
/?:匹配可选的末尾斜杠,不纳入捕获内容(?:\?.*)?:非捕获组,匹配并忽略可选的查询参数部分(从?开始到结尾的所有内容)
匹配验证
对应示例的匹配结果完全符合需求:
https://example.com/awesome→ 捕获结果:awesomehttps://example.com/awesome/path→ 捕获结果:awesome/pathhttps://example.com/awesome/path/→ 捕获结果:awesome/pathhttps://example.com/awesome/path?arg1=123→ 捕获结果:awesome/path
符合要求的细节确认
- 严格限定匹配
https://example.com域名 - 支持多级目录及中间的
/分隔符 - 自动剔除末尾的
/ - 完全排除查询参数部分
- 仅允许目录名包含字母数字、
-和_
RE2兼容性说明
该正则完全遵循RE2语法规范,未使用任何RE2不支持的特性(如回溯断言、递归匹配等),可以直接在谷歌云平台的日志标签规则中使用。
内容的提问来源于stack exchange,提问作者osolmaz
相关产品推荐
相关产品推荐

