正则表达式以匹配URL中的子目录数

时间:2018-11-21 04:40:52

标签: regex

我找到了一篇几乎可以满足我确切需求的文章。但是,它需要进行一些调整,我不太清楚。

变化1:正好X个子目录,带有拖尾 此变体假定每个子目录都以斜杠结尾。

正则表达式仅用于一个子目录 ^ / [^ /] + / $

匹配网址路径示例:/ retail /

正则表达式为两个子目录 ^ / [^ /] + / [^ /] + / $

匹配网址路径示例:/零售/服装/

我想调整这两个规则以匹配特定目录。

就我而言,我有一个站点,该站点具有多个顶级目录(产品和商店,每个目录还有两个附加子目录)。

我想创建一个仅针对/ products /以及以下3个子目录的正则表达式规则。

1 个答案:

答案 0 :(得分:1)

我没有系统对此进行测试,但是我认为您可以使用“?”和括号将基本子匹配项中的变量sub-dirs添加到“ / products /”。

基本正则表达式为“ ^ / products / $”。 然后,要匹配0或1个子目录,您可以添加“([[^ /] + /)?” 添加其中三个,我认为您拥有正则表达式来匹配您的基数以及0到3个子目录。我认为这就是您要的。

^/products/([^/]+/)?([^/]+/)?([^/]+/)?$

等效的RE在Emacs中用于以下测试行:

/products/
/products/a/
/products/a/b/
/products/a/b/c/

与此不匹配:

/products/a/b/c/d/

如果您始终想要3个子目录,请删除“?”以添加所需的其他内容。

^/products/[^/]+/[^/]+/[^/]+/$

希望这会有所帮助!