Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式:在捕获组中最后一次出现之前的剥离路径_Javascript_Regex_Path_Strip - Fatal编程技术网

Javascript正则表达式:在捕获组中最后一次出现之前的剥离路径

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

我正在尝试筛选第一个捕获组中的路径

当前,第一个捕获组提取包含其父路径的路径

虽然这种行为完全没有问题,但我不希望包含路径本身。捕获组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

[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上的解释,我现在明白了。