0

我有一个这样的字符串

$myString = "Itwas%AC%4D%AC%4A%5BL3%BF5,T3,S13%4A%5Bbound over%AC%4A%5BC6%4A%5B%5D%AC%4A%5BL7%BF11%4A%5Ball good people to come"

我的要求是计算 %4A%5B 的出现次数,并获取两个 %4A%5B 之间的数据并存储在一个数组中。

例子:

1)L3%BF5,T3,S13
2)C6
3)L7%BF11

在上面的字符串中,它出现了 6 次。所以我想知道在运行时并获取 %4A%5B 之间的数据并存储在一个数组中。

4

2 回答 2

3

按照这里的建议使用split 和as split 模式,然后计算结果数组中的元素数:%4A%5B

$myString = "Itwas%AC%4D%AC%4A%5BL3%BF5,T3,S13%4A%5Bbound over%AC%4A%5BC6%4A%5B%5D%AC%4A%5BL7%BF11%4A%5Ball good people to come";
@array = split /%4A%5B/, $myString;
$num = @array - 1;

use Data::Dumper;
print "Occurrences: $num\n";
print Dumper(@array);

输出:

Occurrences: 6
$VAR1 = 'Itwas%AC%4D%AC';
$VAR2 = 'L3%BF5,T3,S13';
$VAR3 = 'bound over%AC';
$VAR4 = 'C6';
$VAR5 = '%5D%AC';
$VAR6 = 'L7%BF11';
$VAR7 = 'all good people to come';
于 2013-04-12T07:15:52.097 回答
1

您还可以像这样计算正则表达式匹配:

my @matches = $myString =~ /%4A%5B/g;
print scalar(@matches)
于 2013-04-12T08:05:08.197 回答