Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Не работает рег.выражение


Автор: igorold 5.2.2008, 10:22
есть текст:
Код

|101,03FF|102,00000318|103,05bd|105,52000100084002|106,2007-01-17|107,1989-11-05|108,1|110,ДАВЫДОВ|111,АНДРЕЙ|112,АНДР
ЕЕВИЧ|113,2006-12-14|114,2006-12-13|116,ГОРЬКОВСКАЯ ОБЛ. Г.АРЗАМАС-16|117,НИЖЕГОРОДСКАЯ ОБЛ. Г.САРОВ УЛ.МУЗРУКОВА [color=crimson]12|1-21[/color]|118,ФГУ ИЗ-[color=crimson]52|1 Г[/color]
УФСИН МЮ РФ ПО НИЖЕГОРОДСКОЙ ОБЛ.|120,ПО 2-МУ ДЕЛУ ПО ПОСТ. Р/С Г.САРОВА НИЖЕГОРОДСКОЙ ОБЛ.|121,161 Ч.1 УК РФ

Необходимо в тексте с тегами, а тег представляет собой символ | далее код из 3-х цифр и запятая. 
Необходимо заменить все символы | не входящие в теги на символ / 
Следующее рег - выражение не всегда работает
Код

$line=~s!\|([^\d\d\d\,])!\/$1!g;


например оно не меняет 12|1-21 на 12/1-21

Помогите подправить рег. выражение

Автор: AlexPet 5.2.2008, 11:27
Цитата(igorold @  5.2.2008,  10:22 Найти цитируемый пост)
например оно не меняет 12|1-21 на 12/1-21

Попробуйте так:

Код

$line=~s#\|(?!\d{3}\,)#/#g;

Автор: igorold 5.2.2008, 12:15
AlexPet, спасибо, так работает  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)