2016-09-20 64 views
0

提取路径和文件名我必须写一个正则表达式来分割的路径和完整的Windows路径文件名,但我只是不明白......正则表达式从Windows

我有现在的问题是:

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

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

输出看起来像这样

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

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

有人可以帮我吗?

感谢。

+0

您正在使用哪种正则表达式引擎? – Richard

+0

我们正在使用Splunk,并且正在测试http://regexstorm.net/tester – Crasher

+0

Splunk使用哪种正则表达式引擎? (如果regexstorm允许Splunk不支持的功能,这是没有帮助的), – Richard

回答

0

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

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

Splunk的正则表达式PCRE(Perl兼容的正则表达式 ),并使用PCRE C库。

+0

嗨雷沃,感谢您的快速回复,还有一个小问题,如果我只是有一个路径最后一个文件夹是错误的文件 - 任何想法呢?在同一步骤中,将会是惊人的在同一步骤中提取文件扩展名 – Crasher

+0

如果最后一部分是没有扩展名的文件,该怎么办? – revo

+0

好问题,但在我们的情况下这是不可能的,所以可以忽略 – Crasher

0

这应该为你的File

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

的工作,这应该为你的Path

(?<Path>^.+\\) 

共同努力...

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

输出:

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

${File}: setup64.exe