如何用&替换逗号?在使用Perl的以下字符串中?

时间:2012-03-13 09:07:44

标签: regex perl replace

我有一个这样的字符串:

my $string = 'Respect,13,201,7,0,0,2,3.70,4,1.01,Responsibility,13,177,29,1,1,2,3.58,4,1.04,Flexibility,13,180,27,0,0,3,3.59,4,1.05,Collaboration,13,194,13,0,0,3,3.65,4,1.04,Reflection,13,187,19,1,0,3,3.62,4,1.05,Commitmentto Learning,13,183,24,0,0,3,3.61,4,1.05,Beliefin Educator Efficacy,13,177,13,0,0,20,3.35,4,1.42,SocialIntelligence,13,184,22,1,0,3,3.61,4,1.05';

我如何编写一个与s///一起使用的模式,用&符号替换,(例如\w+)之前的每个逗号(Responsibility, Flexibility, Collaboration ...)( &)'?

2 个答案:

答案 0 :(得分:3)

您可以使用前瞻断言,如下所示:

s/,(?=[a-z]+)/&/gi

您应该根据您的输入使用更具体的模式替换[a-z]+部分。

答案 1 :(得分:2)

要替换所有逗号后跟\w+(如您所知),我建议

s/,(?=\w)/&/g

由于所有逗号后跟\w+,因此上述内容可简化为

s/,/&/g

如果您的实际意图是仅替换字母后面的逗号,则需要

s/,(?=\pL)/&/g