![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Salatovec |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 9.1.2008 Репутация: нет Всего: -1 |
Доброго всем времени суток, проблема такая - необходимо ловить текст Some text лежащий в следующей структуре <Some text>.
Пишу в шаблоне <(.*)>. Но, к примеру в строке <Hello World>> вместо Hello World ловится Hello World>. Что не так? Заранее спасибо! Это сообщение отредактировал(а) Salatovec - 1.8.2013, 12:53 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
У вас жадное совпадение, имхо надо не жадное
|
|||
|
||||
| Salatovec |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 9.1.2008 Репутация: нет Всего: -1 |
volatile, а поясните, пожалуйста, поподробнее про жадное и не жадное. Спасибо!
|
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
по смыслу не понятно разве?
жадное захватывает максимально возможное совпадение, даже если внутри есть более короткие варианты Не жадное захватывает первое, самое минимальное совпадение Добавлено через 3 минуты и 12 секунд Вот здесь почитайте, раздел: Жадная и ленивая квантификация http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%....86.D0.B8.D1.8F |
|||
|
||||
| Salatovec |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 9.1.2008 Репутация: нет Всего: -1 |
volatile, Спасибо огромное за помощь и информацию =)
|
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
В регулярных выражениях никогда не было жадных и нет совпадений на условия. Там просто ищутся всегда максимально возможные по длине подстроки, удовлетворяющие условию. Потому что, если вы хотите найти менее длинные строки, то вы их просто укажете сами, изменив регулярное выражение
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Хотя, действительно, с трудом представляю примеры, чтобы в регулярных выражениях были нужны способы борьбы против поиска наиболее длинных строк, удовлетворяющих паттерну. Настолько всё сделано гибко. Разве что конкретные реализации сделаны непутёво
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Запрос просто надо нормально писать.
Указывать не все симоволы, а, например, только w. или [a-zA-Z]+ Сами по себе регулярные выражения достаточно мощный и гибкий инструмент, чтобы не использовать "жадные" реализации. И я поправился, кстати, потому что у меня реально в башке не укладывается, что нужно ещё проводить разграничения, когда просто можно обойтись более уместным паттерном. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
На той же ссылке написано маленькими символами, что не во всех реализациях. Просто я не встречался. Хотя с регулярными выражениями сталкивался в Perl, PHP, JavaScript. Сейчас, наверно, в С++ буду с ними работать (давно пора). А паттерн для регулярного выражения можно оформить и по-другому. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
akizelokro, если внимательно присмотреться, там написано несколько другое
Там говорится о поведении по умолчанию! Во всех современных реализациях по умолчанию ищется масимально-возможное совпадение Я других просто не встречал. И вы кстати тоже: Добавлено @ 12:50 А ленивые/жадные/ревнивые квантификаторы есть в любом учебнике по рег.выражениям. и во всех современных реализациях. Это сообщение отредактировал(а) volatile - 5.8.2013, 12:54 |
||||
|
|||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Да я всякой ерундой 4 года занимался. Может быть, что-то новое появилось, откуда я знаю 4 года срок нехилый. В любом случае другого способа узнать, что ничего не изменилось, иначе чем методом проб и ошибок, а подчас и высказыванием глупых суждений на программистском форуме, я не знаю. Если знаете, подскажите. (на правах оффтопика) Это сообщение отредактировал(а) akizelokro - 5.8.2013, 12:54 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Это не аргумент, 15 лет назад я только доки и исходники читал (на английском притом, не знаючи). А потом, если и так работает, зачем ещё что-то читать. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |