看的累啊, 有时候 regex 过于复杂 看的真累,
2011/2/28 cnhack TNT <cnhacktnt@gmail.com>
结合一下正则替换和 y 操作符:$_ = q/love Love LOVE lOVe LOVe lOVE lovE loVE/;s/\b(?![A-Z]+\b)\w\K(\w+)/lc($1)/eg && y/loveLOVE/testTEST/;print $_;2011/2/28 Kermit <kermit.mei@gmail.com>--
On Mon, 2011-02-28 at 09:14 +0800, zwg.zero wrote:我也是这个思路,就是不知到怎么用最Perl的方式写出来。我那个写法太罗嗦了。
> 我的思路是: 第一步把匹配“LOVE”(全大写的)替换为“TEST”;
> 第二步把匹配“L"ove (首字符l大写,后面字符不
> 管大小写)替换为“Test”;
> 第三步把匹配 "love"(不管大小写)都替换
> 为“test”。
最好能有一句实现的那种。
> On 02/25/2011 10:23 PM, zesheng wang wrote:
> > $loveStr =~ s/(l)ove/@{[$1 eq 'L'?'T':'t']}est/gi;
> > 不知道你是不是要这个效果?
> >
> > 在 2011年2月25日 下午6:17,Achilles Xu <formalin14@gmail.com>写 道:
> > 上面的方法也不是一无是处,可以先把foreach里的代码简化了。至
> > 于怎么一句实现,我再想想。
> >
> >
> > $loveStr = q/love LOVE Love lOVe LOve loVE/;
> > print $loveStr."\n";
> > foreach my $en ($loveStr =~ m/love/ig) {
> >
> > $en2 = $en;
> > $en2 =~ tr/loveLOVE/testTEST/;
> > $loveStr =~ s/$en/$en2/g;
> > }
> > print $loveStr."\n";
> >
> >
> > 在 2011年2月25日 下午6:11,Achilles Xu
> > <formalin14@gmail.com>写 道:
> >
> > 呵呵,上面这个是错的,一时没考虑清楚,手快给发了。我
> > 再想想。
> >
> > 在 2011年2月25日 下午6:10,Achilles Xu
> > <formalin14@gmail.com>写 道:
> >
> > tr/loveLOVE/testTEST/;
> >
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
--
Yours Sincerely
Zeng Hong
--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
没有评论:
发表评论