Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
чтобы разделитель определялся только после закрывающей кавычки »
например так, хотя и этот вариант далек от идеала - имя параметра может оказаться частью значения другого параметра (в кавычках), эти случаи не отслеживаются таким выражением:
Код: Выделить весь код
If $CmdLine[0] = 0 Then $CmdLineRaw = '/Param=1 ^File "C:\Program Files\Some App\File - Name.txt" /URL "http://google.com"'

MsgBox(64, "", _
    _GetCmdLine($CmdLineRaw, "/Param=") & @LF & _
    _GetCmdLine($CmdLineRaw, "/URL") & @LF & _
    _GetCmdLine($CmdLineRaw, "^File"))

Func _GetCmdLine($sCmdLine, $sArgument)
    If Not StringInStr($sCmdLine, $sArgument) Then Return SetError(1, 0, "")

    Local $sRegExp = '(?i)^.*?\Q'& $sArgument &'\E\s*(?:(?:"([^"]*)")|([^"\s]+)).*$'
    Local $sRetCmd = StringRegExpReplace($sCmdLine, $sRegExp, '\1\2')
    If $sRetCmd = $sCmdLine Then Return SetError(2, 0, "")

    Return StringStripWS($sRetCmd, 3)
EndFunc
З.Ы. Обрати внимание на теги \Q...\E, они блокируют спецсимволы на интервале выражения
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:22, 01-12-2008 | #1231