2009年3月10日星期二

[PerlChina] Re: 正则表达式匹配字串连接的问题

左边列与右边数据列是匹配的,按行当然ez,但是,有些数据会超过一行,比如2222对应的,这个问题已经可以算是求解了,但是又发现一个小问题

if ( /../ ) {
} else {
$data += $_;
}
2222对应的三行,只有两行会被取到,也就是说只有第二行的数据会被连接起来,后面的行就不会
如果是elsif就可以,但是事实上,这里并不需要第二种匹配,只有两种分支可选,

m选项在这里是不合适的,这样你无法区分数据列与序号列
split貌似也是可以的,但是你得保存两个数组,那就不需要正则表达式了
On 3月10日, 上午9时36分, Michael Zeng <galaxy2...@gmail.com> wrote:
> 没看懂你在写啥,
>
> 对于多行数据, 可以用 /m 来比较,
>
> 或者 split 出来再说
>
> On 3/9/09, owen nirvana <freeespe...@gmail.com> wrote:
>
>
>
>
>
> > 这里人多,来这里问下
> > 把自己的老问题翻上来,如果不是elsif, 而是else, 就只有匹配行的第二行会被合并,下一行就不会, why
>
> > 2222 eewweasdds,asdasd.sadsadasdas
> > ddasdddddddddddddddddddda
> > ddddddddddddddddddddddddddd
> > 2821 easdddddddddddddddddddddddd
> > 2192 288888888888888888888ass0a-das.
> > as;dddsaddaa0---------22222222
> > > > my ($name, $title);
> > > > while (<>){
> > > > if (/^(\d+)\s+(.*)$) {
> > > > if ($name) {
> > > > // 保存上一个 save $name, $title
> > > > // 下面开始处理一个新的
> > > > $name = '';
> > > > $title = '';
> > > > }
> > > > $name = $1;
> > > > $title .= $2;
> > > > } elsif(/^\s+(.*)$/) {
> > > > $title .= $1;
> > > > }
> > > > // save last one
>
> > gtalk:freeespe...@gmail.com <gtalk%3Afreeespe...@gmail.com>
>
> --
> Yours Sincerely
> Zeng Hong
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

没有评论: