Это отделит exe от его параметров; удаление скобок из exe; предполагает чистые данные:
^(?:"([^"]+(?="))|([^\s]+))["]{0,1} +(.+)$
Вы будете проводить два матча одновременно из трех групп матчей:
- Отлично, если он был заключен в скобки
- Exe, если он не был заключен в скобки
- Скопление параметров
Примеры:
"C:\WINDOWS\system32\cmd.exe" /c echo this
Матч 1: C:\WINDOWS\system32\cmd.exe
Матч 2: $ null
Матч 3: /c echo this
C:\WINDOWS\system32\cmd.exe /c echo this
Матч 1: $ null
Матч 2: C:\WINDOWS\system32\cmd.exe
Матч 3: /c echo this
"C:\Program Files\foo\bar.exe" /run
Матч 1: C:\Program Files\foo\bar.exe
Матч 2: $ null
Матч 3: /run
Мысли:
Я почти уверен, что вам нужно создать цикл для захвата возможно бесконечного числа параметров.
Это регулярное выражение может быть легко зациклено на третьем матче, пока матч не завершится неудачей; больше нет параметров.