在我的 perl 程序中,我有一个$new
可变长度的字符串。以下是一些实例:
$new = "sdf / wer / wewe / dfg";
$new = "lkjz / dfgr / wdvf";
$new = "asdfe";
如何/
使用正则表达式将分隔的元素提取到数组中?
您可以使用该split
函数,该函数将要拆分的模式、要拆分的字符串以及可选择的拆分次数作为参数。
$new = "sdf / wer / wewe / dfg";
@values = split(" / ", $new );
如果您有固定的分隔符,那么正则表达式不一定是最佳选择。split 函数是一个更好的选择:
my @items = split " / ", $new;
您没有说元素中可以包含哪些字符,但假设它们可以包含除斜杠之外的任何字符,这将为您提取它们。它还排除任何前导或尾随空格和空字段。
use strict;
use warnings;
my @new = (
" sdf / wer / wewe / dfg ",
" sdf / dfgr / wdvf ",
" asdfe ",
" first field / second field ",
" a / b / c / d / e / f ",
);
for (@new) {
my @fields = m|[^/\s](?:[^/]*[^/\s])?|g;
printf "(%s)\n", join ', ', map "'$_'", @fields;
}
输出
('sdf', 'wer', 'wewe', 'dfg')
('sdf', 'dfgr', 'wdvf')
('asdfe')
('first field', 'second field')
('a', 'b', 'c', 'd', 'e', 'f')