Forum Webscript.Ru

Программирование => Perl => Тема начата: от 24 Января 2002, 16:08:05

Название: выделить символы которые дали совпадение
Отправлено: от 24 Января 2002, 16:08:05
hi

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

простой пример
регулярное выражение: /cro(.{1})s/
текст: cross
нужно выделить cro и s в конце слова, а четвертую s выделять не надо
но этот пример лишь чатный случай, его реализовать несложно, а решить задачу в общем виде у меня не получается

помогите пожалуйста
Название: выделить символы которые дали совпадение
Отправлено: Chs от 24 Января 2002, 16:27:46
m/(cro)(.{1})(s)/;
print $1,$3;

Вуаля! :)

perldoc perlop в части m//
Название: выделить символы которые дали совпадение
Отправлено: от 24 Января 2002, 16:44:01
Цитировать
m/(cro)(.{1})(s)/;
print $1,$3;


боюсь ты не совсем правильно меня понял
мне нужно не получить эти символы, а выделить их - например верхним регистром - в исходном тексте
т.е. я должен получить СROsS
а в общем случае мне нужны позиции тех символов которые надо выделить

регулярное выражение заведомо мне неизвестно, оно составляется на лету
Название: выделить символы которые дали совпадение
Отправлено: Chs от 24 Января 2002, 17:17:39
Как объясняешь так и понял.:)

s/(cro)(.{1})(s)/uc($1).$2.uc($3)/e;

А в общем случае все зависит естественно от того, как будет конструироваться регулярное выражение.:)