这很奇怪,我不知道这是什么问题!
我有一个非常大的字符串(长度= 648745),我不知道它的长度是否可以解决这个问题,但我正在尝试在其中找到一些参数,并将它们推送到一个数组,就像这样:
push(@items_ids, [$2, $3]) while ($all_items_list =~ /itemID&(id|num)=([\d]*)\">\#([\d]*)/g);
它不起作用,它最后返回一个空数组。我想可能是我的RegEx不对,但是当我运行这段代码时:
while ($all_items_list =~ /itemID&(id|num)=([\d]*)\">\#([\d]*)/){
print "\nItemID=$2 Identity=$3\n";die;
}
它找到了第一次出现,当我在ReEx的末尾加上“g”它再也找不到它了......
我知道我在这里遗漏了一些东西,请帮助我,这不是我剧本的一个难点而且我被卡住了,:( ...
提前感谢您的帮助。
答案 0 :(得分:4)
在标量上下文中,m/.../g
开始关注上一次成功m/.../g
停止的位置。我建议在循环之前重置搜索位置:
pos($all_items_list) = undef;
push(@items_ids, [$2, $3]) while ($all_items_list =~ /itemID&(id|num)=([\d]*)\">\#([\d]*)/g);
并看看是否有帮助。 (见http://perldoc.perl.org/functions/pos.html。)