如何替换两个锚点之间的字符?

时间:2012-03-23 14:24:20

标签: regex perl

如果我有这样的字符串

my $s = 'src="/api/385/=VIGTIG%20UPDATE%20!.jpg?size=webview" /></span>';

如何将所有%20替换为_/api/385/之间的所有>

2 个答案:

答案 0 :(得分:4)

这将做你想要的事情

$s =~ s|(/=[^>]+)| (my $ss = $1) =~ s/%20/_/g; $ss |e;

但是你知道%20是空格的十六进制吗?

答案 1 :(得分:3)

一种方法是写:

$s =~ s{(/api/385/[^>]*>)}{my $tmp = $1; $tmp =~ s/%20/_/g; $tmp}e;

(/api/385/[^>]*>)替换为其中%20替换为_的结果。 (e中的s///标记表示“替换内容是表达式,而不是字符串文字”。)