我尝试以重复方式匹配文件夹/文件 - 基于路径分隔符/
。
正则表达式:
/^(?:music|pictures)\/tom(?:(?=\/)\/([\w\-]+(?:\s+[\w\-]+)*)|$)$/gm
以上正则表达式的说明:
// Match a base-directory called music/pictures
// Match if directory tom exist
// If delimiter was found, match delimiter and word-character and hypen (no spaces etc at the beginning)
// Match spaces, word-characters and hypen (no spaces etc at the end)
//If delimiter was not found, end string
//End string
每次找到分隔符/
(正向前瞻)时,它也应该与剩余条件匹配。除了子文件夹击中正则表达式之外,它的效果非常好。
music/tom/foldername
music/tom/folder name
music/tom/foldername/folder2 <--- Does not match
正如您所看到的,最后一条路径无法匹配。如何扩展/改进正则表达式以匹配子文件夹?
正则表达式演示:https://regex101.com/r/oG9bC3/1
答案 0 :(得分:1)
您可以使用此正则表达式来获得您想要的内容
^(?:music|pictures)\/tom((?:\/(?:[\w-]+(?:[ ]+[\w-]+)*))+)$
<强> Regex Demo 强>
注意强>
-
在** character class
的 first / last 中使用时不需要进行转义。