2009年9月5日星期六

[PerlChina] Re: 请教如何合并多个连续的[img]标签正则该怎么写啊?

大概可以实现,要用到
look-around match ,    或者用split 分隔开也行
 
 
 
 
#!/usr/bin/perl

use strict ;
use warnings ;
use Data::Dumper ;


$_ = qq~
[img]aa[/img]
[img]bb[/img]   [img]bb[/img]
文字
[img]cc[/img]   [img]cc[/img]  [img]cc[/img]

ddddd

[img]cc[/img]  [img]cc[/img]  [img]cc[/img]  [img]cc[/img]

~;


# use split maybe more clear : depends on you
#my @data =  grep { length } split /(\s*\[img\]\S+\[\/img\]\s*)/ ,  $_ ;

#print Dumper \@data ;


# method 1 :  keep the last one :
s/  \[img\] \S+ \[\/img\]     (?= \s* \[img\] \S+ \[\/img\] \s* )  //xg ;

print ;


#or


# method 2 :  keep the first one : divide into 3 substeps : can control
# more detailedly  ,

# step1 : front has not  , back has
s/ (?<!\[\/img\]) \s* (\[img\]\S+\[\/img\]) \s*  (?=\[img\]) /$1/xg ;

# step2 : front /back both has
s/ (?<=\[\/img\]) \s* (\[img\]\S+\[\/img\]) \s*  (?=\[img\]) //xg ;

# step3 : front has , back has not
s/ (?<=\[\/img\]) \s* (\[img\]\S+\[\/img\]) \s*  (?!\[img\]) //xg ;


print ;

 

 

 



 

2009/9/5 imxae <imx365ster@gmail.com>
就是合并连html标签的问题,如:

str=qq~
[img]aa[/img]
[img]bb[/img]
文字
[img]cc[img]
~;

处理之后:

str=
[img]aa[/img]
文字
[img]cc[/img]
;

因为上面[img]标签aa与bb是连续的,中间只有空格或回车,也算是连续的.所以处理后应剩一个.后同的cc因为前面有文字内容和前面的标签分隔开了,而且只有一个就保留下来.

就是处理因为连续重复出现的标签.不知道说清楚了没有..


2009/9/5 Michael Zeng <galaxy2004@gmail.com>:
> 没看懂问题,能说得更清除写么
>
>
> 2009/9/5 蓝天下云层上 <imx365ster@gmail.com>
>>
>> $str=qq~[img]sss[/img]
>> [img]bbb[/img][img]ccc[/img]~;
>>
>> $str=~ ..;
>>
>>
>> 如何把上面连续标签[img]合并成一个[img]sss[/img],只要有两个或两个以上一样的标签出现只保留一个?
>
>
>
> --
>            Yours Sincerely
>                    Zeng Hong
>
> >
>


--
           Yours Sincerely
                   Zeng Hong

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: