[perl, regexp] засплитить подстроку одним регэкспом невозможно?

pitrik2


> perl -e 'print join ("..", ("5,6 [1,2,3,4] 7,8" =~ /\[(?:(\d+?)+\]/ "\n";'
4

я так понимаю что все они попадают в $1 и типа каждый следущий предыдущий затирает, поэтому на выводе токо один остается
может это как-то можно поправить?
может можно как-то по-другому в одну команду получить массив 1,2,3,4 из ентой строки?
т.е. изначально задача стоит типа так: заменить следущий код на одну строку

$tmp = ("5,6 [1,2,3,4] 7,8" =~ /\[(.*)\]/;
@result = split /,/, $tmp;

Bibi

$ perl -e 'print join( "..",  split( /,/, ( "5,6 [1,2,3,4] 7,8" =~ /\[(.*)\]/ )[ 0 ] )  "\n";'
1..2..3..4

pitrik2

смешно
ладна, фиг с ним

Bibi

мм? что смешного?

pitrik2

ну то что вариант со сплитом итак изначальный
уж запистаь любое выражение в одну строку проблем не составит
ты бы еще предложил:
$tmp = ("5,6 [1,2,3,4] 7,8" =~ /\[(.*)\]/; @result = split /,/, $tmp;

типа тож в одну строку

Bibi

ты не писал, что надо "заменить следущий код на одну строку", не используя split.
а какая цель конечная?
от каких минусов этого решения тебе хочется избавиться? или просто академический интерес, как это сделать без split'а?

pitrik2

ты не писал, что надо "заменить следущий код на одну строку", не используя split.
ты точно тему сообщения видишь?
Re: [perl, regexp] засплитить подстроку одним регэкспом невозможно?
цель? ну изначально было чтобы красиво выглядело
потом возник спортивные интерес плюс чтобы лучше понимать как оно устроено

rosali

можно делать вот так:

[xoft ~]$ perl -e '"5,6 [1,2,3,4] 7,8" =~ /\[(?:(\d+?{push @x, $1}?)+\]/; print "@x\n";'
1 2 3 4

pitrik2

?{...}
а можно перловый код в заменах вызывать?
если можно то как?
например возведение всех чисел в строке в квадрат:

s/(\d+)/?{\1*\1}/g

если нельзя, то как покрасивше написать возведение в квадрат?
возиться с @+,@- ?

pitrik2

ааа
нашел
    e — Evaluate 'replacement' as an expression
работает :)

s/(\d+)/$1*$1/eg

Barbie29

тебе чего надобно? какую подстроку от какой подстроки выделить, приведи пример.
s/(\d+)/$1*$1/eg
за этот регексп на сайте http://perlmonks.org/ тебя не то что изнасилуют(это будет абсолютная и бесповоротная радость) - тебя там в перловый ад сошлют (а в перловом аде парсят хтмл-теги).
Оставить комментарий
Имя или ник:
Комментарий: