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

如何构建可匹配两类内部URL的正则表达式(适用于BASH脚本)

解决BASH中匹配两级/多级内部URL路径的正则问题

你的问题出在原正则的结构上:/\w+\/.+\/[\w\-]+/ 要求路径里至少包含两个斜杠(因为有两个明确的\/),所以像category/subcategory这种只有一个斜杠的两级路径自然被排除在外。

要同时匹配两级和多级的内部路径,我们可以调整正则的逻辑,让它允许至少一个斜杠,同时保持路径段的规则(根据你的示例,路径段允许字母、数字、下划线和连字符)。

推荐的正则表达式

^[\w\-]+(?:\/[\w\-]+)+$

正则拆解

  • ^:匹配字符串开头(确保我们匹配的是完整路径,而非文本片段)
  • [\w\-]+:匹配第一个路径段,允许字母、数字、下划线和连字符
  • (?:\/[\w\-]+)+:非捕获组,匹配一个或多个「斜杠+路径段」的组合——这就实现了:
    • 匹配两级路径(比如category/subcategory:1次「斜杠+路径段」)
    • 匹配多级路径(比如category/subcategory/sub-subcategory/item-1:3次「斜杠+路径段」)
  • $:匹配字符串结尾(避免部分匹配,比如category/subcategory/extra不会被误判为有效路径)

BASH脚本中的使用示例

你可以用BASH的=~操作符来测试匹配:

# 测试两级路径
test_path="category/subcategory"
if [[ $test_path =~ ^[\w\-]+(?:\/[\w\-]+)+$ ]]; then
    echo "✅ 两级路径匹配成功"
else
    echo "❌ 两级路径匹配失败"
fi

# 测试多级路径
test_path="category/subcategory/sub-subcategory/item-1"
if [[ $test_path =~ ^[\w\-]+(?:\/[\w\-]+)+$ ]]; then
    echo "✅ 多级路径匹配成功"
else
    echo "❌ 多级路径匹配失败"
fi

可选调整:允许路径段包含特殊字符

如果你需要兼容原正则中.+的逻辑(即路径段允许任意非换行字符),可以把正则改成:

^\w+(?:\/.+)+$

不过这个版本会匹配比如category/subcategory/!@#$这类可能不符合预期的路径,所以更推荐前面严谨的版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:45:06