-2

我希望你能指导我,我做错了。

我有例如:

my $text = "<some tag>  stuff here> </some tag> mer mer <some tag> 'more stuff' </some tag>";

 @b =($text =~ m/s(.)uff/gsi);
 print "array B, size: ",  @b+0,  ", elements: ";
 print join (" ,", @b);
 print "\n";


 @c =($text =~ m/<some tag>(.+)<\/some tag>/g);
 print "array C, size: ",  @c+0,  ", elements: ";
 print join (", ", @c);
 print "\n"; 

输出如下:

array B, size: 2, elements: t ,t
array C, size: 1, elements:   stuff here> </some tag> mer mer <some tag> 'more stuff' 

我对数组 C 的输出感兴趣

size 2: , elements stuff here , 'more stuff'

为什么它会跳过它?

4

2 回答 2

2
/<some tag>(.+?)<\/some tag>/

如果它们不能嵌套,就可以解决问题。

于 2013-03-08T01:13:22.463 回答
1

为了在字符串中找到最短匹配,使用非贪婪搜索(.+?)

否则,对于最长的匹配字符串,您可以使搜索变得贪婪 (.+)

为了更好地理解,请参阅链接。

因此,正确的答案将是池上给出的答案。

于 2013-03-08T06:23:49.793 回答