Regex用于提取有限数量的文件夹(前三级)



考虑以下文件路径:

\fileserversharedocumentsdepartmentmy_projecta_sub_foldermyfile.doc

我需要用正则表达式提取文本"\documents\document\my_project"。详细信息:

  • 排除"文件服务器"one_answers"共享"
  • 之后限制为3个"逻辑"顶级文件夹,从而排除"\a_sub_folder"
  • 不包括文件名("myfile.doc")

使用以下正则表达式..:

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

我在我的"文件夹"组中得到了这个:

documentsdepartmentmy_projecta_sub_folder

困扰我的部分是如何摆脱"a_b_folder"。我尝试过在文件夹组中添加重复运算符,但没有效果:

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

上面两个选项中的第一个不会更改输出,而第二个则返回一个空组"文件夹"

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

谢谢:)

/Geir

怎么样:

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

最新更新