![]() |
Модераторы: ginnie |
![]() ![]() ![]() |
|
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Приветствую.
Не так давно начал изучать Perl. Возник вопрос насчет выделения из строки, фрагмента, в котором отсутствует заданная подстрока. Например, выделить из строки "<ABCD>EFG>" фрагмент "<ABCD>" следующим образом : от символа "<" до ">" с отсутствием "EFG". Я использую
этот код не работает (выделяет всю строку). Я, очевидно, неправильно пытаюсь указать интерпретатору, что "EFG" отсутствует. Прошу не закидывать тухлыми помидорами и не отправлять в поиск. Задача вроде бы для знающих не очень сложная. Заранее спасибо. |
|||
|
||||
Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
что значит "выделить"?
Если просто от символа < до символа >:
|
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 5 Всего: 10 |
Насколько понял задачу, нужно
|
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 1 Всего: 49 |
Anark1, я сделал так
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
Itsys, не просто от и до. Думаю, ваш код также будет работать на примере, но мне нужен случай именно с отсутствием некоторой подстроки.
Logo, спасибо, не поясните немного? И заодно если не сложно, почему не работает мой вариант с квантификатором? |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 1 Всего: 49 |
Anark1, Ваше выражение удаляет в строке все символы начиная с < и до конца строки.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
Anark1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 622 Регистрация: 15.12.2006 Где: RF -> Moscow Репутация: нет Всего: 11 |
ginnie, да это я знаю
![]() Ладно, вопрос решен, всем спасибо. |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 5 Всего: 10 |
Потому что там так напсано
![]() |
|||
|
||||
Pori |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 10.9.2007 Репутация: нет Всего: 1 |
Валь, используй негативную опережающую проверку. Вот здесь все расписано, для начала самое оно:
Регулярки А именно по твоему случаю - logo все правильно рассказал. Но если уж очень хочешь сделать через {0}, то можно:
не забывай ? - этим ты скажешь интерпретатору искать по минимуму. Ну или модификатор U А с чего вдруг перл начал учить? Это сообщение отредактировал(а) Pori - 21.8.2009, 23:54 |
|||
|
||||
Logo |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 5 Всего: 10 |
Поправка
(?:EFG){0} Здесь погоды не делает, это аналогично
Т.е. <ABCD EFG> заберет. Модификатора U в перле нет, это PHP. |
||||
|
|||||
Pori |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 10.9.2007 Репутация: нет Всего: 1 |
Знаю, что не делает - поэтому и написал, если очень хочется с {0} ![]() Сори модификатора U нет. Но все-равно нежадные регулярки никто не отменял ;) |
||||||
|
|||||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |