1

考虑以下文件路径:

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

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

  • 排除“文件服务器”和“共享”
  • 之后限制为 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}?\\.+

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

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

谢谢 :)

/盖尔

4

1 回答 1

1

怎么样:

^.*share(?P<folders>(?:\\[^\\]+){1,3})
于 2012-03-14T15:16:09.667 回答