天天面对成百上千的正则表达式,已经习惯了....相对来说,这个算清爽的 :-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 访问此网上论坛。

回复