Вопрос по регулярным выражениям

indigo666

Client
Регистрация
10.05.2014
Сообщения
1 098
Благодарностей
344
Баллы
83
Здравствуйте.

Есть пару вопросов по регулярным выражениям.

1. Как сделать Поиск на наличие текста таким образом, чтобы программа искала несколько текстов на совпадение в одном блоке с помощью рег. выражений? Такое вообще возможно? Вариант создать несколько блоков отпадает, так как это приведет к сверхнагрузке.

2. Как сделать с поиск след. текста.

Последний визит: 4 ноя 2013

Это пример.

Но даты меняются.

Если текущего года - то дата будет БЕЗ года, т.е. вида:

Последний визит: 4 марта

Так вот, как заставить программе понять, где посещение в этом году, а где нет.



Второй вопрос можно решить, если программа будет искать текст не во всем коде, а в конкретной части кода ( скажем в конкретном теге с конкретным атрибутом ), но как это сделать без понятия.

Программа ищет текст на всей странице.

Заранее спасибо за ответы и помощь.
 

indigo666

Client
Регистрация
10.05.2014
Сообщения
1 098
Благодарностей
344
Баллы
83
Сам нашел ответ на свой вопрос. В данном случае нужно это рег. выражение:

(?<=<span\ class="onlineText">Последний\ визит:\ ).*?(06|07|08|09|10|11|12|13|14)(?=</span>)

Может кому понадобится )
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 884
Баллы
113
1. Прописывайте в виде test|test1|test2
2.
Код:
(?<=Последний визит:\ ).*
Так получите то, когда был визит. Если же нужно проверить в этом ли году, делайте регуляркой
Код:
(?<=Последний визит:\ )\d+\s+\w+\d+
Если она что то нашла, значит не в этом году.
3. Для того, что бы искать не во всём тексте - либо нужно правильно подготавливать регулярку, либо нужно идти в 2 этапа - сначала получать нужный кусок, а потом в нём искать.
 
  • Спасибо
Реакции: indigo666

indigo666

Client
Регистрация
10.05.2014
Сообщения
1 098
Благодарностей
344
Баллы
83
А точнее вот это:

Код:
(?<=Последний\ визит:).*?(06|07|08|09|10|11|12|13|14)
 

indigo666

Client
Регистрация
10.05.2014
Сообщения
1 098
Благодарностей
344
Баллы
83
1. Прописывайте в виде test|test1|test2
2.
Код:
(?<=Последний визит:\ ).*
Так получите то, когда был визит. Если же нужно проверить в этом ли году, делайте регуляркой
Код:
(?<=Последний визит:\ )\d+\s+\w+\d+
Если она что то нашла, значит не в этом году.
3. Для того, что бы искать не во всём тексте - либо нужно правильно подготавливать регулярку, либо нужно идти в 2 этапа - сначала получать нужный кусок, а потом в нём искать.
Моя версия дала трещинку, но Ваша тоже не сработала.... (

Нужно чтобы программа проверила в этом ли году профиль посещалось в одноклассниках
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 884
Баллы
113

indigo666

Client
Регистрация
10.05.2014
Сообщения
1 098
Благодарностей
344
Баллы
83
3. Для того, что бы искать не во всём тексте - либо нужно правильно подготавливать регулярку, либо нужно идти в 2 этапа - сначала получать нужный кусок, а потом в нём искать.
А как сделать этот вариант? Скажем спарсил в переменную, как сделать, чтобы программа искала текст именно в этой переменной?
 

indigo666

Client
Регистрация
10.05.2014
Сообщения
1 098
Благодарностей
344
Баллы
83
Задачу решил выражением:

Код:
(?<=Последний визит:\ ).*\s(янв|фев|мар|апр|май|июн|июл|авг|сен|окт|ноя|дек)\s20
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)