Regex 正则表达式从Windows中提取路径和文件名

Regex 正则表达式从Windows中提取路径和文件名,regex,splunk,Regex,Splunk,我必须写一个正则表达式来从完整的windows路径中分割路径和文件名,但我就是不明白 我现在得到的是: (?<Path>.*)(?:\\+)(?:[^\\]*)\\(?<File>.*)$ 因此,由于任何原因,我的路径的最后一个目录都不会被提取 有人能帮我吗 谢谢。您在正则表达式中间有非捕获组,这些组会导致引擎匹配,但不会捕获。将其更改为: (?<Path>.*\\(?:[^.]*$)?)(?<File>.*$)? (?.\\(?:[^.]*$

我必须写一个正则表达式来从完整的windows路径中分割路径和文件名,但我就是不明白

我现在得到的是:

(?<Path>.*)(?:\\+)(?:[^\\]*)\\(?<File>.*)$
因此,由于任何原因,我的路径的最后一个目录都不会被提取

有人能帮我吗


谢谢。

您在正则表达式中间有非捕获组,这些组会导致引擎匹配,但不会捕获。将其更改为:

(?<Path>.*\\(?:[^.]*$)?)(?<File>.*$)?
(?.\\(?:[^.]*$)(?.*$)?
Splunk正则表达式是PCRE(Perl兼容的正则表达式) 表达式)并使用PCRE C库


这应该适用于您的
文件

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

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

您正在使用哪个正则表达式引擎?我们正在使用Splunk-并且正在测试Splunk使用哪个正则表达式引擎?(如果regexstorm允许Splunk不支持的功能,则没有任何帮助。)这也应该起作用:
(?。:\\.*)\\\(?*)$
。它不会包括最后一个反斜杠。由于贪婪匹配,它会将最后一个反斜杠之前的所有内容放入路径。嗨,revo,谢谢你的快速回复,如果我有一个路径,那么还有一个小问题。最后一个文件夹是错误的文件-对此有什么想法吗?在同一步骤中,在同一步骤中提取文件扩展名将是令人惊讶的。如果最后一部分是没有扩展名的文件呢?好问题,但这在我们的例子中是不可能的,因此可以忽略。这是完美的-是否也可以直接为文件扩展名包含一个附加变量?是
(?。\\\\\(?:[^.]*$)(?。。。。。(?.*)$)?
(?<Path>^.+\\)
(?<Path>^.+\\)(?<File>[^\\]+\.\w+$)
${Path}: C:\ProgramFiles\CONEXANT\DTSCONFIG\

${File}: setup64.exe