Javascript正则表达式:在捕获组中最后一次出现之前的剥离路径
我正在尝试筛选第一个捕获组中的路径 当前,第一个捕获组提取包含其父路径的路径 虽然这种行为完全没有问题,但我不希望包含路径本身。捕获组1应仅提取父路径(如果有) 捕获组2必须保持原样。(见下图中的红色数字) Regex:Javascript正则表达式:在捕获组中最后一次出现之前的剥离路径,javascript,regex,path,strip,Javascript,Regex,Path,Strip,我正在尝试筛选第一个捕获组中的路径 当前,第一个捕获组提取包含其父路径的路径 虽然这种行为完全没有问题,但我不希望包含路径本身。捕获组1应仅提取父路径(如果有) 捕获组2必须保持原样。(见下图中的红色数字) Regex: /^(?:music|pictures)\/tom((?:\/((?:[\w-]+(?:[ ]+[\w-]+)*)))*)$/gm music/tom/foldername music/tom/folder name music/tom/foldername/folder2
/^(?:music|pictures)\/tom((?:\/((?:[\w-]+(?:[ ]+[\w-]+)*)))*)$/gm
music/tom/foldername
music/tom/folder name
music/tom/foldername/folder2
比赛对手:
/^(?:music|pictures)\/tom((?:\/((?:[\w-]+(?:[ ]+[\w-]+)*)))*)$/gm
music/tom/foldername
music/tom/folder name
music/tom/foldername/folder2
预期结果:
/^(?:music|pictures)\/tom((?:\/((?:[\w-]+(?:[ ]+[\w-]+)*)))*)$/gm
music/tom/foldername
music/tom/folder name
music/tom/foldername/folder2
[MATCH 1]
我希望第一场比赛(绿色)是空的,因为它
没有父母也没有孩子
[MATCH 2]与[MATCH 1]相同
[MATCH 3]我希望第一个匹配(绿色)只包含
父母
正则表达式演示:
从技术上讲,我可以保留我的正则表达式并使用Javascript实现预期行为:
str.substr(str.lastIndexOf('/'))
不过,如果能将其与正则表达式一起存档,我将不胜感激。您可以修改正则表达式以实现所需的行为,如
^(?:music|pictures)\/tom(\/(?:[\w-]+(?:[ ]+[\w-]+)*))*(\/(?:[\w-]+(?:[ ]+[\w-]+)*))$
<--------------------------->
Captures the parent directory
类似于辉煌的作品@rock321987。非常感谢您,再次感谢您在Stackoverflow的出色帮助。通过查看上面对regex的描述和regex101.com上的解释,我现在明白了。