在路径

时间:2019-01-09 20:05:24

标签: regex

我有以下路径:

O:\Audits\Crisis Management 2016\2016 ECPR Final Report.pdf

我需要一个正则表达式,该表达式返回路径中最后一个文件夹的名称(最右侧),该名称将为“ Crisis Management 2016 ”。

我尝试了(?:[^\\]*\\|^)[^\\]*$,它很接近,但返回的是“ 危机管理2016 \ 2016 ECPR Final Report.pdf ”,其中包括结尾的反斜杠和文件名。 / p>

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用

[^\\]+(?=\\[^\\]+\\?$)

请参见regex demo

详细信息

  • [^\\]+-除\以外的1个以上的字符
  • (?=\\[^\\]+\\?$)-一个正向超前查询,需要\,除\以外的1个字符和一个可选的\,位于字符串右边紧随其后的字符串的末尾当前位置。

如果您可以轻松访问捕获组并且不支持前瞻,请使用

([^\\]+)\\[^\\]+\\?$

请参见this demo

先行转变为使用模式,第一个模式用捕获括号包裹起来(形成将子匹配保留在内存缓冲区中的第1组)。

答案 1 :(得分:0)

.*\\([^\\]+)\\
  • .* means that we go-go...
  • but when reached EOF step by step go back...
  • and check the following (\([^\]+)\) condition;
  • then remember folder name in Capturing Group;
  • thats it.