Что нового

[RegExp] Получить из строки путь до файла и убрать кавычки.

erlik

Продвинутый
Сообщения
317
Репутация
84
Просьба помочь составить шаблон для вытаскивания из строк такого вида
Путь до исполняемого файла: C:\WINDOWS\System32\svchost.exe -k netsvcs
Путь до исполняемого файла: "c:\Program Files\Microsoft SQL Server\100\Shared\SQLADHLP.EXE"
только пути - без аргументов, в случае если путь заключен в кавычки - их тоже нужно убрать.
Для первого вида можно,конечно,обойтись StringSplit(), но для второго варианта требуется регулярное выражение. А так как неизвестно какая строка попадется - то регулярное выражение должно подходить для обоих случаев.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
erlik,
Попробуйте так:
Код:
$sPath_1 = 'C:\WINDOWS\System32\svchost.exe -k netsvcs'
$sPath_2 = '"c:\Program Files\Microsoft SQL Server\100\Shared\SQLADHLP.EXE"'
$sPath_3 = "'c:\Program Files\Microsoft SQL Server\100\Shared\SQLADHLP.EXE' -e"
$sPattern = '(?i)^(?>("|''|))(.*?\.exe)\1(\s.*+|''|)$'
$sPath_1 = StringRegExpReplace($sPath_1, $sPattern, '\2')
$sPath_2 = StringRegExpReplace($sPath_2, $sPattern, '\2')
$sPath_3 = StringRegExpReplace($sPath_3, $sPattern, '\2')
MsgBox(0, '', $sPath_1 & @LF & $sPath_2 & @LF & $sPath_3)
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Спасибо за ответ, но я немного поспешил с открытием темы - "велосипед" уже изобрели до меня. :smile:
Нашел вот здесь http://autoit-script.ru/index.php?topic=1282.msg9205#msg9205 нужное мне регулярное выражение - как раз то что доктор прописал. Имею ввиду вот это :
Код:
$aMatches = StringRegExp($a, """*(.+?\.\w+)", 1)
 
Верх