Регулярные выражения: несколько значений одним выражением

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Shaiden
Сообщения: 16
Зарегистрирован: Ср янв 30, 2013 7:36 am
Благодарил (а): 0
Поблагодарили: 0

Регулярные выражения: несколько значений одним выражением

Сообщение Shaiden » Пн фев 04, 2013 11:43 am

Собственно есть такой вопрос. Можно ли одним регулярным выражением получить сумму подстрок. Т.е. к примеру имеется вот такой текст:

Код: Выделить всё

<span class="b-thermometer-info__mark">Восход: </span>09:32 <span class="b-thermometer-info__mark">Заход: </span>18:11</div>
Чтобы получить время восхода солнца я сделал вот такое выражение:

Код: Выделить всё

Восход: </span>(.+?)<span
Оно корректно достает время восхода. Теперь я хочу достроить выражение так, чтобы в него попал вот такой текст: 09:32 18:11. Решил пойти по наитию и сделал вот так:

Код: Выделить всё

Восход: <\/span>(.+?)<span class.*?Заход: <\/span>(.+?)<\/div>
Думал, что обработка произойдет следующим образом: возьмется время восхода, а затем просмотр текста продолжится и возьмется собственно время захода. Но не тут-то было. Поиск по интернету не выдает ничего похожего, может быть не так ищу конечно, но все же. Кто нибудь может подсказать, это реально? Или регулярные выражения так не работают?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Регулярные выражения: несколько значений одним выражение

Сообщение sergejey » Пн фев 04, 2013 2:19 pm

Сейчас в веб-переменных берётся первое вхождение, т.е. первые скобки. В принципе, не сложно сделать, чтобы все найденные совпадения приклеивались друг к другу для результата. Так имеется в виду?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Shaiden
Сообщения: 16
Зарегистрирован: Ср янв 30, 2013 7:36 am
Благодарил (а): 0
Поблагодарили: 0

Re: Регулярные выражения: несколько значений одним выражение

Сообщение Shaiden » Вт фев 05, 2013 6:19 am

sergejey писал(а):Сейчас в веб-переменных берётся первое вхождение, т.е. первые скобки. В принципе, не сложно сделать, чтобы все найденные совпадения приклеивались друг к другу для результата. Так имеется в виду?
Именно! Поясню для каких целей.
Например нужно не просто взять цифры а получить целиком таблицу или фрагмент. Я например захотел взять полностью данные по погоде с яндекса (http://pogoda.yandex.ru/tyumen/) в красивом виде, но вся страница мне не нужна. Т.е. нужно взять шапку страницы для корректного вывода таблички по городу (той которая самая верхняя), а затем непосредственно данные, которые находятся на много строчек ниже. Т.е. фактически нужно сформировать упрощенную страницу из текущей, чтобы получилось нечто вроде виджета. Также такая возможность будет удобна при необходимости сформировать строку определеногго формата, используя данные со страницы.
Конечно можно и вручную прописать шапку, но это уже несколько не то, как я думаю. В случае со строкой из нескольких данных так вообще не выйдет ничего.
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Регулярные выражения: несколько значений одним выражение

Сообщение anemcov » Вт фев 05, 2013 7:43 pm

а скриптом не проще вытащить и сунуть в переменную или сразу в свойство?
Shaiden
Сообщения: 16
Зарегистрирован: Ср янв 30, 2013 7:36 am
Благодарил (а): 0
Поблагодарили: 0

Re: Регулярные выражения: несколько значений одним выражение

Сообщение Shaiden » Ср фев 06, 2013 6:57 am

anemcov писал(а):а скриптом не проще вытащить и сунуть в переменную или сразу в свойство?
Может быть и проще, я просто хотел узнать возможность сделать это с помощью регулярных выражений, ведь если можно, то так было бы намного проще.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Регулярные выражения: несколько значений одним выражение

Сообщение sergejey » Ср фев 06, 2013 11:32 am

Я добавлю "суммирование" результата, чтобы всё, что в скобках было в результате, а не только первая скобка.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Регулярные выражения: несколько значений одним выражение

Сообщение sergejey » Чт фев 07, 2013 10:59 am

В последней версии в исходниках все найденные значения (в скобках) склеиваются в результате.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить