2016-09-20 2 views
0

я должен написать RegEx разделить путь и имя файла из полного пути окна, но я просто не понимаю ...RegEx извлечь путь и имя файла из 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 Compatible Regular Expressions ) и использовать библиотеку PCRE C.

+0

Привет, revo, спасибо за быстрый ответ, остается одна небольшая проблема, если у меня есть только путь, последней папкой является файл, который является неправильным - любая идея для этого? на том же шаге было бы удивительно извлечь расширение файла на том же этапе – Crasher

+0

Что делать, если последняя часть - это файл, который не имеет расширения? – revo

+0

Хороший вопрос, но это невозможно в нашем случае, чтобы его можно было игнорировать. – Crasher

0

Это должно работать для File

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

И это должно работать для вашего Path

(?<Path>^.+\\) 

вместе ...

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

Выход:

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

${File}: setup64.exe 
Смежные вопросы