我正在尝试过滤第一个捕获组中的路径 .
目前,第一个捕获组提取包括其父路径的路径 .
虽然这种行为完全正常,但我不希望包含路径本身 . 捕获组1应仅提取父路径(如果有) .
捕获组2必须保持原样 . (见下图中的红色数字)
Regex:
/^(?:music|pictures)\/tom((?:\/((?:[\w-]+(?:[ ]+[\w-]+)*)))*)$/gm
Match against:
music/tom/foldername
music/tom/folder name
music/tom/foldername/folder2
Expected results:
[MATCH 1]我希望第一场比赛(绿色)是空的,因为它没有任何父母和孩子[MATCH 2]和[MATCH 1] [MATCH 3]相同我期待第一场比赛(绿色)到只包含父母
正则表达式演示:https://regex101.com/r/yN2kK2/1
从技术上讲,我可以保留我的正则表达式,并使用Javascript的预期行为:
str.substr(str.lastIndexOf('/'))
但是,我很欣赏这是否可以使用正则表达式存档 .
1 回答
您可以修改正则表达式以实现所需的行为
Regex Demo
如果您将
/tom
(以及最后一个)之后的所有内容都视为父目录,则可以将正则表达式修改为Regex Demo