vicbox777
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ynbIpb 07:23 29-05-2009 Цитата: как всётаки это работает stringregexpreplace($sMsg,"!dir(.*)","\1") | Сдесь .* - это любой текст (точка - это любой символ, а звездочка указывает на то что эти символы могут, как присуствовать, так и отсуствовать), который идет после слова !dir, а так как этот "любой текс" заключен в кавычки, то это называется 1 групировка. Так вот назначение как раз этой функции в этом случае: Case "!dir"&stringregexpreplace($sMsg,"!dir(.*)","\1"),- это вернуть весь текст который идет после слова !dir, а 1 групировка именно производит захват этого текста, а параметр "\1" как раз возвращает только текст этой групировки. "\1", еще можно было бы записать как "$1". В этом случае: $sPath=StringRegExpReplace($sMsg,".*dir(?:\s)*(.*)","\1"), тоже самое, за исключением того что это - (?:\s)* означает, любое количество пробелов, которые могут, как присуствовать, так и нет, а это ?: означает, не захватывать эту групировку, но можно было бы написать и так: $sPath=StringRegExpReplace($sMsg,".*dir(\s)*(.*)","\2")... Цитата: Я тут подумал может в функциях работы с файлами передавать пути в кавычках? Ведь например в оперции копирования, нужно будет передать 2 пути... например: !copy "откуда" "куда" | В кавычках, так в кавычках, я не против. А насчет параметров, которые нужно будет извне передавать в скрипт, а потом правильно их обработать, то проще будет так: Код: $sTekst='!Copy "1параметр" "2параметр" "и т.д. параметр"' $arrayOFparametrs=StringRegExp($sTekst, '(?:"(.*?)")+', 3) If (Not @Error) Then for $i = 0 to UBound($arrayOFparametrs) - 1 msgbox(0, "$arrayOFparametrs["& $i&"]", $arrayOFparametrs[$i]) Next EndIf | В тексте, который в переменной $sTekst параметры один от другого должны как то быть отделены, или пробелами, или любым символом. | Всего записей: 165 | Зарегистр. 17-06-2008 | Отправлено: 18:15 30-05-2009 | Исправлено: vicbox777, 21:03 30-05-2009 |
|