在我的perl程序中,我在$new
中有一个长度可变的字符串。以下是一些实例:
$new = "sdf / wer / wewe / dfg";
$new = "lkjz / dfgr / wdvf";
$new = "asdfe";
如何使用正则表达式将/
分隔的元素提取到数组中?
答案 0 :(得分:3)
您可以使用split
函数,该函数将要拆分的模式作为参数,要拆分的字符串以及可选的拆分次数。
$new = "sdf / wer / wewe / dfg";
@values = split(" / ", $new );
答案 1 :(得分:2)
如果你有一个固定的分隔符,那么正则表达式不一定是最好的选择。拆分功能是更好的选择:
my @items = split " / ", $new;
答案 2 :(得分:2)
你没有说明元素中可以包含哪些字符,但假设它们可以包含除斜线之外的任何字符,这将为您提取它们。它还排除任何前导或尾随空格和空字段。
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')