在我的Perl程序中,我在$new
中具有可变长度的字符串。以下是一些实例:从字符串中提取元素的正则表达式
$new = "sdf/wer/wewe/dfg";
$new = "lkjz/dfgr/wdvf";
$new = "asdfe";
我如何提取由/
分隔的元素融入到使用正则表达式的阵列?
在我的Perl程序中,我在$new
中具有可变长度的字符串。以下是一些实例:从字符串中提取元素的正则表达式
$new = "sdf/wer/wewe/dfg";
$new = "lkjz/dfgr/wdvf";
$new = "asdfe";
我如何提取由/
分隔的元素融入到使用正则表达式的阵列?
可以使用split
函数,该函数作为参数的模式分割上,字符串分割,以及可选的次数分裂。
$new = "sdf/wer/wewe/dfg";
@values = split("/", $new);
如果你有一个固定的分隔符,那么正则表达式不一定是最好的选择。分割函数是一个更好的选择:
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')
这是如此简单,我想正则表达式的! :P 谢谢你! – 2012-07-24 19:02:23
@rad,那么,'split'的第一个参数就是一个正则表达式:)顺便说一句,我不想隐藏这个事实。我会使用'split(qr {/},$ new)'或'split(qr {\ s */\ s * /},$ new)'。 – ikegami 2012-07-24 19:24:10
@ikegami,你是对的! – 2012-07-24 20:09:47