в этой строке
ab<(CN)cdXYlm<(CI)efgXYop<(CN)zXYklmn<(CI)efgXYuvw<
Я хочу заменить каждую подстроку между XY
и <
на ОДИН или ДВА в зависимости от символов в предыдущих скобках:
, если XY
после (CN)
заменить подстроку на ONE
, если XY
после (CI)
заменить подстроку на TWO
Таким образом, результат должен быть:
ab<(CN)cdONE<(CI)efgTWO<(CN)zONE<(CI)efgTWO<
XY
и следующие символы должны быть заменены, но не угловая скобка <
.
Это предназначено для изменения HTML, и произвольные символы могут встречаться между XY
и <
.Я думаю, мне нужно два регулярных выражения для (CN) и (CI).
# This one replaces just all XY:
my $s = 'ab<(CN)cdXYlm<(CI)efgXYop<(CN)zXYklmn<(CI)efgXYuvw<';
$s =~ s/(XY(.*?))</ONE/g;
# But how to add the conditions to the regex?