私の perl プログラムで$new
は、可変長の文字列があります。次にいくつかの例を示します。
$new = "sdf / wer / wewe / dfg";
$new = "lkjz / dfgr / wdvf";
$new = "asdfe";
/
正規表現を使用して、で区切られた要素を配列に抽出するにはどうすればよいですか?
split
分割するパターン、分割する文字列、およびオプションで分割する回数を引数として取る関数を使用できます。
$new = "sdf / wer / wewe / dfg";
@values = 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')
区切り文字が固定されている場合、正規表現は必ずしも最適なオプションではありません。分割関数はより良い選択です:
my @items = split " / ", $new;