Регулярное выражение для извлечения имени файла из исполняемых файлов - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь извлечь имя файла только из набора путей файла следующим образом:

C:\Program Files\test\test.test.test.test.exe

В этом случае необходимо только имя файла:

test.test.test.test

Кроме того, поскольку имя файла будет использоваться в качестве переменных позже, необходима именованная группа захвата.До сих пор я пробовал следующий код, но он все еще включает .exe :

(?<process>[\w-]+\.exe)

Есть ли какое-либо решение для этого?Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 24 сентября 2019

Вы можете соответствовать до последнего \, захватывать в группе 1 любой символ кроме символа новой строки 1+ раз и сопоставлять .exe в конце строки:

^.*\\(?<process>.+)\.exe$
  • ^ Начало строки
  • .*\\ Соответствует последнему \
  • (?<process>.+) Именованная группа захвата process, соответствует любому символу 1+ раз, кроме новой строки
  • \.exe Соответствие .exe
  • $ Конец строки

Regex demo

0 голосов
/ 24 сентября 2019

Попробуйте \\(?<gr>[^\\]+)\.[^.]+$

Объяснение:

[^\\]+ - соответствует один или несколько символов другим из \

[^.]+ - соответствует одному или нескольким символамдругие из .

Демо

0 голосов
/ 24 сентября 2019

Попробуйте (?<process>[\w\.-]*)\. извлечет имя файла только с любым расширением имени файла

0 голосов
/ 24 сентября 2019

Вам просто нужно добавить.на ваш выбор разрешенных символов и удалите «.exe» из вашей подходящей группы.См. Рабочий пример

регулярное выражение: (?<process>[\w\.-]*)\.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...