|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] StringRegExpReplace непонятен синтаксис |
|
[решено] StringRegExpReplace непонятен синтаксис
|
Пользователь Сообщения: 73 |
Профиль | Отправить PM | Цитировать
Наткнулся на полезную функцию в http://autoit-script.ru/index.php?topic=2805.0. Читал help смотрел примеры, так и не понял,
1) $sLocation = StringRegExpReplace($sResponse, "(?s).*Location: (.*?)[\r\n].*", "\1") Зачем .* - ведь вроде перед Location: нет 2х одинаковых подряд символов. 2) как мне из <script type="text/javascript" language="JavaScript"> window.location.replace("/files/75350.pdf"); </script> выделять files/75350.pdf Помогите пожалуйста разобраться с функцией. Спасибо! По 2 получилось StringRegExpReplace($ReDirect1, "(?s).*window.location.replace[(][""]/(.*?)["");\r\n].*", "\1") Однако хотелось бы на будущее понимать функцию, поэтому вопрос 1 остался, хотя я сейчас понимаю .* как набор любых символов. Тогда зачем (?s) в начале? 3) Почему замена [(][""] на [(""] приводит к сбою результата? 4) почему 3й параметр "\1" хотя в help это flag и он - число? Спасибо! |
|
Отправлено: 08:00, 24-01-2011 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать AlexM, вот ещё вариант попробуй
(?si)(?:.*window.location.replace\("\/)(.*?)(?:"\);\r\n.*) Для справки посмотри утилиту RegExp. Там есть справка в виде HTML и справка в виде Library_Example.ini, который нужно открыть утилитой и пробовать работу регулярок в действии. 4. "\1" - это не может быть флагом, так как третий параметр "replace" - элемент замены. Комбинация "\1" - замена на первую группу. Группы определяются скобками. Кроме закомментированных скобок /( 1. .* - в чём поиск? Где то есть, а где то нет. Комбинация предполагает даже отсутствие символов. 2. (?s) - в справке: чтобы комбинация .* включала переносы строк. Иначе для многострочного текста работать не будет. 3. [(][""] - это вообще не понятно... [(] - квадратные скобки определяют набор символов, а один символ не понятно зачем туда совать/толкать. [""] - одинаковые символы тоже бессмысленно толкать. Набор символов внутри квадратных скобок подрозумевает один символ из возможного набора символов, а если набор из двух одинаковых или одного символа, то идея теряется, его можно не заключать в квадратные скобки. Ну кроме этого хочется добавить, что регулярное выражение должно не только найти правильный результат, но и исключить ложное срабатывание... К примеру такая регулярка (?s)(?:.*\("\/)(.*?)(?:".*) тоже будет работать, но стоит чуть изменить текст поиска и либо произойдёт захват ненужного, либо игнорирование нужного. |
Отправлено: 09:56, 24-01-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать AlexM,
Предупреждение за нарушение правил форума, пункт 2.7 и пункт 3.19: Цитата:
|
|
------- Отправлено: 15:04, 24-01-2011 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
StringRegExpReplace — для чайников! | semiono | AutoIt | 14 | 21-11-2010 01:51 | |
[решено] Расширенная замена StringRegExpReplace | ALFERIUS | AutoIt | 5 | 03-09-2009 11:11 | |
[решено] Не могу разобраться с FileOpen и StringRegExpReplace | ALFERIUS | AutoIt | 6 | 26-08-2009 14:10 | |
[решено] И снова stringRegExpReplace... | Twix1124 | AutoIt | 6 | 01-06-2009 03:49 | |
[решено] Хелп с StringRegExpReplace | xSpaiderx | AutoIt | 8 | 31-03-2009 23:16 |
|