【发布时间】:2019-07-11 15:13:08
【问题描述】:
在这个字符串中
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?
【问题讨论】: