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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите отфильтровать последнее "bla" 
:(
    Опции темы
pep
Дата 8.4.2010, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть строчка типа "foo bla-bla-bla foo bla-bla .... foo bla bar". Как из него выцепить последнее "bla"? Сам новичок, курю уже пару часов PCRE-документацию, ничего не получается... Суть задачи, видимо, в том, чтобы выцепить последнее foo - вот это у меня и не выходит...  smile 

Это сообщение отредактировал(а) pep - 8.4.2010, 09:13
PM MAIL   Вверх
amg
Дата 8.4.2010, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А это и не так просто smile
Что-то вроде
Код
m/(bla)(?!bla)($|(?:.(?!bla))+)$/ && print "$`<$1>$2\n";

Но если нужно не просто найти (какой в этом смысл?), а продолжить поиск с данного места (вполне жизненная задача), то такая конструкция не подойдет, т.к. она пробегает строку до конца. Тогда читайте PerlCookbook, там есть параграф, который так и называется: "Поиск последнего совпадения".
PM MAIL   Вверх
Logo
Дата 8.4.2010, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



m/.*\Kbla/s and print ${^MATCH};

Это сообщение отредактировал(а) Logo - 8.4.2010, 12:25
PM MAIL   Вверх
amg
Дата 8.4.2010, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А ведь и верно! Оказывается, все крайне просто...
Logo,  а что \K означает?
PM MAIL   Вверх
Logo
Дата 8.4.2010, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



\K  выбрасывает из совпадения все что совпало перед ней. Это новинка perl 5.10, ускоряет и упрощает код.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




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


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

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