RegEx从Windows中提取路径和文件名

时间:2016-09-20 15:11:01

标签: regex splunk

我必须编写一个RegEx来从完整的Windows路径中分割路径和文件名,但我只是不明白......

我现在拥有的是:

(?<Path>.*)(?:\\+)(?:[^\\]*)\\(?<File>.*)$

我的测试路径是:C:\ ProgramFiles \ CONEXANT \ DTSCONFIG \ setup64.exe

输出看起来像这样

${Path} = C:\ProgramFiles\CONEXANT
${File} = setup64.exe

因此,出于任何原因,我的路径的最后一个目录未被提取。

有人可以帮帮我吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您在RegEx中间有非捕获组,导致引擎匹配但不捕获。将其更改为:

(?<Path>.*\\(?:[^.]*$)?)(?<File>.*$)?
  

Splunk正则表达式是PCRE(Perl Compatible Regular   表达式)并使用PCRE C库。

答案 1 :(得分:0)

这适用于您的File

(?<File>[^\\]+\.\w+$)

这适用于您的Path

(?<Path>^.+\\)

...一起

(?<Path>^.+\\)(?<File>[^\\]+\.\w+$)

输出:

${Path}: C:\ProgramFiles\CONEXANT\DTSCONFIG\

${File}: setup64.exe