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

正则表达式需求:匹配routing后斜杠数量≤1的字符串

解决思路与正确正则表达式

你的需求是匹配routing之后斜杠数量不超过1个的路径,也就是两种情况:routing作为路径的最后一段,或者routing后面只跟着一段子路径(仅一个斜杠分隔)。我们可以直接针对这两种情况构建精准的正则:

正确正则表达式

^.*/routing(?:/[^/]+)?$

正则拆解说明

  • ^:锚定字符串的起始位置,确保从开头开始匹配
  • .*:匹配routing之前的任意路径内容(比如示例中的/fajwe/conv_2)
  • /routing:精确匹配路径中的/routing固定片段
  • (?:/[^/]+)?:这是一个可选的非捕获组,用来覆盖两种合法情况:
    • /:匹配routing之后的第一个斜杠
    • [^/]+:匹配斜杠之后的一段不含斜杠的内容(确保不会出现第二个斜杠)
    • ?:表示这个组可以出现0次或1次,既支持routing后无内容的场景,也支持仅跟一段子路径的场景
  • $:锚定字符串的结束位置,确保routing之后没有多余的路径片段

验证你的测试用例

  • 匹配成功的目标路径:
    • /fajwe/conv_2/routing → 符合routing后无内容的情况
    • /fajwe/conv_2/routing/apwfe → 符合routing后仅一段子路径的情况
  • 自动排除的不符合路径:
    • /fajwe/conv_1/routing/apwfe/afjwepfj → routing后有2个斜杠
    • /fajwe/conv_3/routing/apwfe/afjwepfj/awef → routing后有3个斜杠
    • /fajwe/conv_4/routing/apwfe/afjwepfj/awef/0o09 → routing后有4个斜杠

原正则的问题分析

你之前使用的^((?!rou\w+(\/\w+){2,}).)*$逻辑存在两处关键问题:

  1. rou\w+匹配范围太宽泛,会命中所有以rou开头的单词,无法精准定位到routing
  2. 负前瞻的写法是逐个字符扫描整个字符串,只要存在任意位置满足rou\w+(\/\w+){2,}就会排除整个字符串,这种方式无法精准锚定routing的位置,导致匹配逻辑完全失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:58:44