从 Windows 中提取路径和文件名的正则表达式
RegEx to extract Path and Filename from a Windows
我必须编写一个 RegEx 来从完整 windows 路径中拆分路径和文件名,但我就是不明白...
我现在拥有的是:
(?<Path>.*)(?:\+)(?:[^\]*)\(?<File>.*)$
我的测试路径是:C:\ProgramFiles\CONEXANT\DTSCONFIG\setup64.exe
输出看起来像这样
${Path} = C:\ProgramFiles\CONEXANT
${File} = setup64.exe
所以出于任何原因,我的路径的最后一个目录没有被提取。
有人可以帮帮我吗?
谢谢。
您在 RegEx 中间有非捕获组,这导致引擎匹配但不捕获。将其更改为:
(?<Path>.*\(?:[^.]*$)?)(?<File>.*$)?
Splunk regular expressions are PCRE (Perl Compatible Regular
Expressions) and use the PCRE C library.
这应该适用于您的 File
(?<File>[^\]+\.\w+$)
这应该适用于您的 Path
(?<Path>^.+\)
一起...
(?<Path>^.+\)(?<File>[^\]+\.\w+$)
输出:
${Path}: C:\ProgramFiles\CONEXANT\DTSCONFIG\
${File}: setup64.exe
我必须编写一个 RegEx 来从完整 windows 路径中拆分路径和文件名,但我就是不明白...
我现在拥有的是:
(?<Path>.*)(?:\+)(?:[^\]*)\(?<File>.*)$
我的测试路径是:C:\ProgramFiles\CONEXANT\DTSCONFIG\setup64.exe
输出看起来像这样
${Path} = C:\ProgramFiles\CONEXANT
${File} = setup64.exe
所以出于任何原因,我的路径的最后一个目录没有被提取。
有人可以帮帮我吗?
谢谢。
您在 RegEx 中间有非捕获组,这导致引擎匹配但不捕获。将其更改为:
(?<Path>.*\(?:[^.]*$)?)(?<File>.*$)?
Splunk regular expressions are PCRE (Perl Compatible Regular Expressions) and use the PCRE C library.
这应该适用于您的 File
(?<File>[^\]+\.\w+$)
这应该适用于您的 Path
(?<Path>^.+\)
一起...
(?<Path>^.+\)(?<File>[^\]+\.\w+$)
输出:
${Path}: C:\ProgramFiles\CONEXANT\DTSCONFIG\
${File}: setup64.exe