荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: earthworm.bbs@bbs.sjtu.edu.cn (岁月的童话), 信区: Linux
标  题: Re: 求 Perl表达式一个
发信站: 饮水思源 (Sun Mar 27 19:26:24 2005)
转信站: SZU!news.szu.edu.cn!bbsnews.sdu.edu.cn!SJTU

我觉得层数多了也没有关系

继续添加函数嵌套就可以了

$string="Abc <abc de <fds fdsft> fsdf tfd> fsdf";

$string=~s/(<)(.*?)(\>)/space($2)/eg;

sub space{
$s=shift;
$s=~s/([^<]*)<(.*)>([^>]*)/space2($1,$2,$3)/eg;
return “<$s>";
}

sub space2{
my ($1,$2,$3)= @_;
$1=~s/(\s)/_/g;
$3=~s/(\s)/_/g;
$2=~s/(\s)/-/g;

return $1."<".$2.">".$3;

}


【 在 colin (БРАТЬЯ) 的大作中提到: 】
: 如果要加上一个条件,括号中的括号要进一步匹配转换,这该怎么实现...
: Abc <abc de <fds fdsft> fsdf tfd> fsdf
: Abc <abc_de_<fds-fdsft> fsdf_tfd> fsdf
: ...
: 【 在 pupilzeng (火星) 的大作中提到: 】
: : 把这个函数直接写到正则表达式中也可以的
: : s{<(.*?)>}{my $str = $1; $str =~ s/\s/_/g}ge;
: : 本来我最初是想这样写的
: : s{<(.*?)>}{$1 =~ s/\s/_/g}ge;
: : 结果说$1是只读的,不能修改,就只好写成了这样了
: .................(以下省略)

--

    饮 水 思 源
※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 202.120.61.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店