Sep. 26th, 2010

nataraj: (Бритый небритый)
Хочу очень простой вещи: разделить строку на части, при этом разделители многосимвольные, похожи, но отличаются на пару символов друг от друга... Хочется нечто вроде

my $s="111 =aa= 222 =bb= 333 =cc= 444";
print join "\n", split(/=(aa|bb|cc)=/, $s);

Но: split когда в шаблоне встречаются скобки то что попадает в зону группировки добавляет в результирующий список, а нам это не надо. если скобки убрать то тогда знак равенства становиться частью первой и последний альтернативы. Это нам тоже не надо.

Теоретически можно написать split /=aa=|=bb=|=cc=/, $s
и тогда все будет. Но это только в примере выглядит коротко... В жизни так писать не хотелось бы.

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

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 17th, 2025 10:17 am
Powered by Dreamwidth Studios