Какое выражение регулярного выражения лучше всего подходит для извлечения имени файла Windows и пути к файлу? - PullRequest
0 голосов
/ 19 марта 2019

Создайте одно регулярное выражение, чтобы извлечь две части 'New Process Name' как file_path и file_name.Обратите внимание, что в этом примере:

Process Information:
New Process ID:     0x8609
New Process Name:   C:\Windows\System32\example_c.exe
New Process Name:   D:\Intel\Logs\User\Tom Warner\logs.txt
  1. есть две директории
  2. , файл находится на диске C, и ни одно из имен каталогов или имени файла не содержит пробел

Однако в других примерах журналов может быть любое произвольное количество путей к файлам на любом буквенном диске.А в Windows имена каталогов и файлов могут содержать пробелы и могут быть заключены в кавычки.Убедитесь, что ваше регулярное выражение может охватить любой из этих случаев.

Это выражение, которое я придумал.Я могу сопоставить путь_файла, но мне не повезло с именем_файла.Какое выражение следует использовать для соответствия как file_name, так и file_path

New Process Name:\t+(?<file_path>\w:*[\\\S|*\S]?.*$).*?(?<file_name>[\w-]+?(?=\.))

1 Ответ

0 голосов
/ 22 марта 2019
New Process Name:\t+(?<file_path>\w:.*?)(?<file_name>[^\\]+)$

(?<file_path>\w:.*? Создает имя группы file_path


\w: соответствует букве диска.Пути к дискам Windows обычно состоят из букв


.*? Совпадает со всеми после буквы диска


(?<file_name>[^\\]+)$ создает имя группы имя_файла [^\\]+ означает, что оно не равно \ который позволяет регулярному выражению принимать всю информацию, пока он не увидит последний \

...