我阅读了所有类似的问题,而不是回答问题。
我看到了很多“删除或添加”,但没有“移动到另一个阵列......”
这个问题低于你们所有人,但我是Perl Newblet,可以使用优雅的解决方案帮助。
我有一个包含未知元素的数组,每个元素都包含一个类似于{img_names_will_change.jpg}some unknown text
的字符串。
我需要一个子程序,它将从每个元素中去除{yadayada.jpg}
并将yadayada.jpg
部分添加到第二个数组。
但是,我仍然需要原始数组中的每个元素都能生存,但没有{....}
。
我研究过使用substr或regex但是在语法上迷失了。
我也将在正则表达式上进行RTFM。
答案 0 :(得分:0)
如果我说得对,这可能是一个解决方案:
my @names = (
'{img_names_will_change.jpg}some unknown text',
'{img_names_will_change.jpg}some unknown text',
'{img_names_will_change.jpg}some unknown text'
);
my @extract;
foreach my $name ( @names ) {
if ( $name =~ m/{(\w+\.\w+)}/ ) {
push @extract, $1;
}
}
use Data::Dumper;
print Dumper @extract;
输出
$VAR1 = 'img_names_will_change.jpg';
$VAR2 = 'img_names_will_change.jpg';
$VAR3 = 'img_names_will_change.jpg';
使用{(\w+\.\w+)}
提取Imagename并将其推送到另一个数组中。
答案 1 :(得分:0)
我明白了。只需将字符串的其余部分添加到$2
并将其应用于$original
。谢谢Paulchenkiller!
foreach my $orignal ( @original ) {
#Extracts the text from within "{}" and pushes it into @images
if ( $original =~ m/{(\w+\.\w+)}(.*)/ ) {
push @images, $1;
#Strips "{..}" out of @original
$original = $2;
}
}