perl替换当前行中第二个a字符为zk字符的正则怎么写?
假设当前行为
123, ahello,wrolda,345;
如何把第二个a替换成zk,第一个不变,及替换后得到
123, ahello,wroldzk,345;
[解决办法]
关键是如何描述第二个a的特征,即规则,有了规则才有正则。
比如是不是可以描述第二个a的规则是:前面是d字符,后面跟着逗号
如果是这样,可有
$str = "123, ahello,wrolda,345";$str =~ s/(?<=d)a(?=,)/zk/g; print $str;
[解决办法]
perl -le '$s="123, ahello,wrolda,345;";print $s if($s=~s/([^a]*a)([^a]*)a(.*)/\1\2zk\3/)'123, ahello,wroldzk,345;