1

在我的 perl 程序中,我有一个$new可变长度的字符串。以下是一些实例:

$new = "sdf / wer / wewe / dfg";
$new = "lkjz / dfgr / wdvf";
$new = "asdfe";

如何/使用正则表达式将分隔的元素提取到数组中?

4

3 回答 3

3

您可以使用该split函数,该函数将要拆分的模式、要拆分的字符串以及可选择的拆分次数作为参数。

$new    = "sdf / wer / wewe / dfg";
@values = split(" / ", $new );
于 2012-07-24T18:49:04.203 回答
2

如果您有固定的分隔符,那么正则表达式不一定是最佳选择。split 函数是一个更好的选择:

my @items = split " / ", $new;
于 2012-07-24T18:48:54.637 回答
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')
于 2012-07-24T18:52:22.853 回答