Автор Тема: Помогите написать регексп.  (Прочитано 2886 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hazel

  • Коллежский регистратор
  • *
  • Сообщений: 1
  • Репутация: 0
Помогите написать регексп.
« : БХЭвпСам 09, 2007, 01:06:42 am »
Начинающий программист.. не могу найти как заполнить массив найденными элементами из текста.
Есть строки вида: {+90}Zr,{+115}In,{+116},{+117},{+118},{+120},{+124}Sn,{+127}I
Массив надо заполнить так: [{+90}Zr ]  [{+115}In]  [{+116},{+117},{+118},{+120},{+124}Sn]  [{+127}I]
Подскажите плз, как сделать.

Оффлайн pompei

  • Коллежский регистратор
  • *
  • Сообщений: 2
  • Репутация: 0
Re: Помогите написать регексп.
« Ответ #1 : ґХЪРСам 28, 2007, 09:00:41 am »
Я бы сделал так:

Код: (perl) [Выделить]
use strict;
my $S = "{+90}Zr,{+115}In,{+116},{+117},{+118},{+120},{+124}Sn,{+127}I";
my @res = ();

while ($S =~ /[A-Z][a-z]?,?/) { #Ищем название элемента и запятую, если есть
my $left = "$`$&"; #Запоминает то, что совпало и то, что было до совпадения
$S = "$'"; #Остальное будем обрабатывать в следующей итерации цикла
$left =~ s/,$//; #Убираем запятую, если она есть
push @res, $left; #Сохраняем в результирующий массив
}

use Data::Dumper;
print Dumper \@res;
« Последнее редактирование: ґХЪРСам 28, 2007, 09:08:46 am от pompei »