Regex 用于提取有限数量文件夹的正则表达式(前3级)

Regex 用于提取有限数量文件夹的正则表达式(前3级),regex,regex-group,Regex,Regex Group,考虑以下文件路径: \\fileserver\share\documents\department\my_project\a_sub_folder\myfile.doc 我需要用正则表达式提取文本“\documents\department\my_project”。详情: 排除“文件服务器”和“共享” 之后限制为3个“逻辑”顶级文件夹,因此不包括“\a\u sub\u文件夹” 不包括文件名(“myfile.doc”) 使用以下正则表达式..: ^.*share(?P<folders&

考虑以下文件路径:

\\fileserver\share\documents\department\my_project\a_sub_folder\myfile.doc
我需要用正则表达式提取文本“\documents\department\my_project”。详情:

  • 排除“文件服务器”和“共享”
  • 之后限制为3个“逻辑”顶级文件夹,因此不包括“\a\u sub\u文件夹”
  • 不包括文件名(“myfile.doc”)
使用以下正则表达式..:

^.*share(?P<folders>\\.+)\\.+
困扰我的部分是如何摆脱“a_sub_文件夹”。我已尝试将重复运算符添加到文件夹组,但没有效果:

^.*share(?P<folders>\\.+){1,3}\\.+
^.*share(?P<folders>\\.+){1,3}?\\.+
^.*共享(?P\\.+){1,3}\\\+
^.*共享(?P\\.+){1,3}\\\+
上面两个选项中的第一个不会更改输出,而第二个选项返回一个空组“folders”

我有一种感觉,我的正则表达式是根本错误的,但不明白为什么。谁能帮我解释一下吗

谢谢:)

/Geir

那么:

^.*share(?P<folders>(?:\\[^\\]+){1,3})
^.*共享(?P(?:\\[^\\]+){1,3})
那么:

^.*share(?P<folders>(?:\\[^\\]+){1,3})
^.*共享(?P(?:\\[^\\]+){1,3})

太棒了,谢谢!不过,我不能因为你的声誉太低而高估你的答案。太棒了,谢谢!不过,我不能推翻你的答案,因为你的声誉太低了。