You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写匹配固定开头、任意顺序分组并捕获分类名的正则表达式

WordPress URL路径重写正则解决方案

需求匹配规则

  • 匹配固定c/开头的分类筛选路径
  • 提取路径中第一段的分类名
  • 支持后续任意顺序排列的f-前缀筛选参数,分别捕获参数键名和参数值
  • 输出单行正则,适配WordPress add_rewrite_rule 功能的PCRE正则规范

问题原因

原有正则(f-(brand|hair-porosity|shampoo-type)?-?(.*?)(/|$))存在两个核心缺陷:

  1. 未覆盖路径开头的c/前缀和分类名捕获逻辑,无法提取分类字段
  2. PCRE正则(WordPress底层正则引擎)对重复出现的单个捕获组,只会保留最后一次匹配结果,因此会出现仅捕获第一个/最后一个f参数的问题,无法同时拿到所有筛选参数

可用单行正则

^c/([^/]+)(?:/f-(brand|hair-porosity|shampoo-type)-([^/]+))?(?:/f-(brand|hair-porosity|shampoo-type)-([^/]+))?(?:/f-(brand|hair-porosity|shampoo-type)-([^/]+))?/?$

使用说明

  • 第1个捕获组固定返回分类名,直接映射到category查询变量即可
  • 正则中每一组(?:/f-(brand|hair-porosity|shampoo-type)-([^/]+))?对应一个可选的筛选参数匹配块,支持参数任意顺序排列:
    • 块内第一个捕获组返回f参数的键名(如brand、hair-porosity)
    • 块内第二个捕获组返回对应f参数的值
  • 你可以根据实际支持的筛选参数最大数量,追加对应数量的匹配块;如果要新增筛选维度,直接在枚举键名的位置(brand|hair-porosity|shampoo-type)按|新维度名的格式追加即可
  • 匹配效果验证:
    • 对路径c/category-name/f-brand-super-brand/f-hair-porosity-POR,捕获结果为:分类名category-name、f-brand值super-brand、f-hair-porosity值POR
    • 对路径c/exampleC/f-hair-porosity-my-porosity/f-brand-brandY(调换f参数顺序),捕获结果为:分类名exampleC、f-brand值brandY、f-hair-porosity值my-porosity

提示:拿到捕获结果后,遍历所有f参数匹配块的键值对,按键名映射到对应查询变量即可,不受参数排列顺序影响。

内容的提问来源于stack exchange,提问作者Vasco Costa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 05:01:02