Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос про регулярные выражения 
:(
    Опции темы
Salatovec
Дата 1.8.2013, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



Доброго всем времени суток, проблема такая - необходимо ловить текст Some text лежащий в следующей структуре <Some text>.

Пишу в шаблоне <(.*)>.

Но, к примеру в строке <Hello World>> вместо Hello World ловится Hello World>.

Что не так?

Заранее спасибо!

Это сообщение отредактировал(а) Salatovec - 1.8.2013, 12:53
PM MAIL   Вверх
volatile
Дата 1.8.2013, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



У вас жадное совпадение, имхо надо не жадное
Цитата

<(.*?)>.

PM MAIL   Вверх
Salatovec
Дата 1.8.2013, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



volatile, а поясните, пожалуйста, поподробнее про жадное и не жадное. Спасибо!
PM MAIL   Вверх
volatile
Дата 1.8.2013, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



по смыслу не понятно разве?
жадное захватывает максимально возможное совпадение, даже если внутри есть более короткие варианты
Не жадное захватывает первое, самое минимальное совпадение

Добавлено через 3 минуты и 12 секунд
Вот здесь почитайте, раздел: Жадная и ленивая квантификация
http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%....86.D0.B8.D1.8F

PM MAIL   Вверх
Salatovec
Дата 1.8.2013, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



volatile, Спасибо огромное за помощь и информацию =)
PM MAIL   Вверх
akizelokro
Дата 1.8.2013, 13:28 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



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

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
akizelokro
Дата 1.8.2013, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Хотя, действительно, с трудом представляю примеры, чтобы в регулярных выражениях были нужны способы борьбы против поиска наиболее длинных строк, удовлетворяющих паттерну. Настолько всё сделано гибко. Разве что конкретные реализации сделаны непутёво

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
volatile
Дата 1.8.2013, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(akizelokro @  1.8.2013,  13:28 Найти цитируемый пост)
В регулярных выражениях никогда не было жадных 

ссылка выше
PM MAIL   Вверх
akizelokro
Дата 2.8.2013, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Запрос просто надо нормально писать.
Указывать не все симоволы, а, например, только w. или [a-zA-Z]+
Сами по себе регулярные выражения достаточно мощный и гибкий инструмент, чтобы не использовать "жадные" реализации.
И я поправился, кстати, потому что у меня реально в башке не укладывается, что нужно ещё проводить разграничения, когда просто можно обойтись более уместным паттерном.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
volatile
Дата 2.8.2013, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(akizelokro @  2.8.2013,  07:32 Найти цитируемый пост)
Запрос просто надо нормально писать.

akizelokro, запрос написан нормально.
То что вы не подозревали о существовании жадных/ленивых квантификаторов, вина не регеспов, а чья то другая...
Основы это.

PM MAIL   Вверх
akizelokro
Дата 5.8.2013, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Цитата(volatile @  2.8.2013,  11:34 Найти цитируемый пост)
akizelokro, запрос написан нормально.
То что вы не подозревали о существовании жадных/ленивых квантификаторов, вина не регеспов, а чья то другая...
Основы это.


На той же ссылке написано маленькими символами, что не во всех реализациях.
Просто я не встречался. Хотя с регулярными выражениями сталкивался в Perl, PHP, JavaScript. Сейчас, наверно, в С++ буду с ними работать (давно пора).
А паттерн для регулярного выражения можно оформить и по-другому.


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
volatile
Дата 5.8.2013, 12:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(akizelokro @  5.8.2013,  11:46 Найти цитируемый пост)
На той же ссылке написано маленькими символами, что не во всех реализациях.

akizelokro, если внимательно присмотреться, там написано несколько другое
Цитата

В некоторых реализациях квантификаторам в регулярных выражениях соответствует максимально длинная строка 

Там говорится о поведении по умолчанию!

Во всех современных реализациях по умолчанию ищется масимально-возможное совпадение
Я других просто не встречал. 
И вы кстати тоже:
Цитата(akizelokro @  1.8.2013,  13:28 Найти цитируемый пост)
Там просто ищутся всегда максимально возможные 
 smile

Добавлено @ 12:50
А ленивые/жадные/ревнивые квантификаторы есть в любом учебнике по рег.выражениям.
и во всех современных реализациях.



Это сообщение отредактировал(а) volatile - 5.8.2013, 12:54
PM MAIL   Вверх
akizelokro
Дата 5.8.2013, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Цитата(volatile @  5.8.2013,  12:45 Найти цитируемый пост)
И вы кстати тоже:

Да я всякой ерундой 4 года занимался. Может быть, что-то новое появилось, откуда я знаю 4 года срок нехилый. В любом случае другого способа узнать, что ничего не изменилось, иначе чем методом проб и ошибок, а подчас и высказыванием глупых суждений на программистском форуме, я не знаю. smile 
Если знаете, подскажите. smile 

(на правах оффтопика)



Это сообщение отредактировал(а) akizelokro - 5.8.2013, 12:54


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
volatile
Дата 5.8.2013, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(akizelokro @  5.8.2013,  12:54 Найти цитируемый пост)
Может быть, что-то новое появилось, 

я про эти квантификаторы, лет 10 назад читал, в книге по рег выражениям. изданной лет 15 тому назад...  smile 
И там это выдавалось за основы рег.выражений.

PM MAIL   Вверх
akizelokro
Дата 5.8.2013, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Цитата(volatile @  5.8.2013,  12:58 Найти цитируемый пост)
smile 


Это не аргумент, 15 лет назад я только доки и исходники читал (на английском притом, не знаючи). А потом, если и так работает, зачем ещё что-то читать. smile 




--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.