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

时间:2012-03-14 14:54:37

标签: regex regex-group

考虑以下文件路径:

\\fileserver\share\documents\department\my_project\a_sub_folder\myfile.doc

我需要使用正则表达式提取文本“\ documents \ department \ my_project”。详细说明:

  • 排除“fileserver”和“share”
  • 限制为3个“逻辑”顶级文件夹,从而排除“\ a_sub_folder”
  • 不包含文件名(“myfile.doc”)

使用以下正则表达式:

^.*share(?P<folders>\\.+)\\.+

..我在“文件夹”组中得到了这个:

\documents\department\my_project\a_sub_folder

唠叨我的部分是如何摆脱“a_sub_folder”。我尝试将重复操作符添加到文件夹组中,但没有效果:

^.*share(?P<folders>\\.+){1,3}\\.+
^.*share(?P<folders>\\.+){1,3}?\\.+

上述两个中的第一个不会更改输出,而第二个返回空组“文件夹”

我有一种感觉,我的正则表达式从根本上是错误的,但无法理解为什么。任何人都可以对此有所了解吗?

谢谢:)

/盖尔

1 个答案:

答案 0 :(得分:1)

怎么样:

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