如何用正则只取字符串里的一小段,保存为另一个字符串?

如何用正则只取字符串里的一小段,保存为另一个字符串?

比如:
$str='111<span>[1] [2] [3]</span>333';
我想取<span>和</span>之间的内容(用正则表达式),另存为一个字符串,请问能实现么?
先分隔,再来取split
print $1 if $str =~ />(.+)</
my $str='111<span>[1] [2] [3]</span>333';
my ($p) = $str =~ m/<span>(.*?)<\/span>/;
print $p;
  再看看正则表达式


QUOTE:
原帖由 kookies 于 2009-1-8 14:55 发表
比如:
$str='111[1] [2] [3]333';
我想取和之间的内容(用正则表达式),另存为一个字符串,请问能实现么?



[Copy to clipboard] [ - ]
CODE:
$_ = '111<span>[1] [2] [3]</span>333';
m{<([^>]+)>([^<]*)</\1>};
print $2, "\n";

当然,这个只是针对你的例子。具体问题还要具体分析。



QUOTE:
原帖由 DQP 于 2009-1-8 15:12 发表
my $str='111[1] [2] [3]333';
my ($p) = $str =~ m/(.*?)/;
print $p;
  再看看正则表达式

太牛了!超级佩服!


QUOTE:
原帖由 ly5066113 于 2009-1-8 15:11 发表
print $1 if $str =~ />(.+)

nice
=~ />(.+)   这个怎么解释
$_ = '111<span>[1] [2] [3]</span>333';
m{<([^>]+)>([^<]*)</\1>};
print $2, "\n";

这个好。


QUOTE:
原帖由 huanghaojie 于 2009-1-8 15:49 发表
=~ />(.+)   这个怎么解释



[Copy to clipboard] [ - ]
CODE:
$str =~ />(.+)</

> <之间的字符