天天面对成百上千的正则表达式,已经习惯了....相对来说,这个算清爽的 :-p
不过这也是为了迎合楼主的要求,不然我自己写代码,刚开始可能会图方便,但跑起来之后会将这部分改成可读性好的多行 2011/2/28 Robin Lee <[email protected]> > 谁会不在乎可读性呢? > 而“短”的标准是代码的表达力和执行效率,而不是代码的行数或字符数。 > > > 2011/2/28 Kermit <[email protected]> > >> On Mon, 2011-02-28 at 13:13 +0800, Michael Zeng wrote: >> > 看的累啊, 有时候 regex 过于复杂 看的真累, >> >> OT一下,我觉得Perl好像不怎么在乎可读性,相对与其他语言,它更是以短 >> 为美,不知到这个理解对否? >> >> B.R >> Kermit >> >> > >> > 2011/2/28 cnhack TNT <[email protected]> >> > >> > 结合一下正则替换和 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 <[email protected]> >> > On Mon, 2011-02-28 at 09:14 +0800, zwg.zero wrote: >> > > 我的思路是: 第一步把匹配“LOVE”(全大写的)替换 >> > 为“TEST”; >> > > 第二步把匹配“L"ove (首字符 >> > l大写,后面字符不 >> > > 管大小写)替换为“Test”; >> > > 第三步把匹配 "love"(不管 >> > 大小写)都替换 >> > > 为“test”。 >> > >> > >> > >> > 我也是这个思路,就是不知到怎么用最Perl的方式写出来。我 >> > 那个写法太罗嗦了。 >> > 最好能有一句实现的那种。 >> > >> > >> > >> > > 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 >> > <[email protected]>写 道: >> > > > 上面的方法也不是一无是处,可以先把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 >> > > > <[email protected]>写 道: >> > > > >> > > > 呵呵,上面这个是错的,一时没考虑清 >> > 楚,手快给发了。我 >> > > > 再想想。 >> > > > >> > > > 在 2011年2月25日 下午6:10, >> > Achilles Xu >> > > > <[email protected]>写 道: >> > > > >> > > > tr/loveLOVE/testTEST/; >> > > > >> > >> > -- >> > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers >> > 讨论组”论坛。 >> > 要向此网上论坛发帖,请发送电子邮件至 >> > [email protected]。 >> > 要取消订阅此网上论坛,请发送电子邮件至 perlchina >> > [email protected]。 >> > 若有更多问题,请通过 >> > http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论 >> > 坛。 >> > >> > >> > >> > -- >> > Yours Sincerely >> > Zeng Hong >> > >> > >> > -- >> > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论 >> > 组”论坛。 >> > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> > 要取消订阅此网上论坛,请发送电子邮件至 perlchina >> > [email protected]。 >> > 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN >> > 访问此网上论坛。 >> >> >> -- >> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 >> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >> 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 >> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >> >> > -- > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 > 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 > 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 > -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
