CreatoR сказал(а):
Можно, но не так просто как казалось (мне)...
Вот примерно оно, но тут условие упирается на количество пробелов (не менее двух), т.к в строке которую нужно получить (первая переменная) могут содержаться пробелы. Я не знаю как по другому сделать, тут нужно проверять пробеле но чтобы они были после потенциальной кавычки, а не до.
Что то я совсем не втыкаю в эти регулярные выражения.

Всю жизнь пользовался
String...() функциями. Можно я тебя еще немножко помучаю?
Касаемо предыдущего примера. Собственно есть строка вида (в реестре -
HKCR\...shell\open\command):
"C:\Program Files\Windows Media Player\wmplayer.exe" "%L"
Я хочу получить путь в первых кавычках, но, как ты понимаешь, этих ковычек может и не быть. Так же ничто не мешает пользователю поставить двойные (или больше) кавычек или пробел(ы) в начале строки (|<--->|
""C:\Pro...""). Я предварительно обрабатываю эту строку так:
$sPath = StringStripWS(RegRead(...), 3)
т.е. по краям строки пробелов не будет. В результате мы имеем следующее:
"C:\Program Files\Windows Media Player\wmplayer.exe" "%L"
или
C:\PROGRA~1\WINDOW~1\wmplayer.exe "%L"
Вот меня и прибило реализовать это одной лишь функцией
StringRegExpReplace(). Получается условие: если первой символ в строке '"', то удаляем все символы '"' в начале и ищем до следующей кавычки; если первый символ не является кавычкой, то просто выбираем строку до первого пробела. Вариант с ""|<--->|"|<->|"" не рассматриваю. Параметр
"%L" так же может отсутствовать или быть другим, например
%1.
Конечно же я это могу реализовать банально через
String...() или с поиощью WinAPI, но
StringRegExpReplace() представляется более элегантным решением.