[问题]谁能解释一下这段话?

软件和网站开发以及相关技术探讨
回复
头像
5451vs5451
帖子: 345
注册时间: 2006-07-14 18:56
来自: Apple Valley, Planet Tux, Linux System

[问题]谁能解释一下这段话?

#1

帖子 5451vs5451 » 2007-01-14 23:38

As with regular pattern matching, any capturing parentheses that are not matched
in a "split()" will be set to "undef" when returned:
@fields = split /(A)│B/, "1A2B3";
# @fields is (1, ’A’, 2, undef, 3)
xki
帖子: 15
注册时间: 2007-01-11 16:41

#2

帖子 xki » 2007-01-15 14:07

如果是 ……

代码: 全选

@list = split/A/,"1A2A3A4A";
foreach (@list){
print "[",$_,"].";
}
输出结果就是:[1].[2].[3].[4].

如果是 ……

代码: 全选

@list = split/(A)/,"1A2A3A4A";
foreach (@list){
print "[",$_,"].";
}
输出结果就是:[1].[A].[2].[A].[3].[A].[4].[A].

可以理解为:括号对字符起到了“保留而不替换”的作用
头像
5451vs5451
帖子: 345
注册时间: 2006-07-14 18:56
来自: Apple Valley, Planet Tux, Linux System

#3

帖子 5451vs5451 » 2007-01-15 19:41

假如有

代码: 全选

$string="f1 (abc), f2, f3 (def); f4";
怎样才能把它拆成

代码: 全选

@field=qw{f1 f2 f3 f4};
呢?
xki
帖子: 15
注册时间: 2007-01-11 16:41

#4

帖子 xki » 2007-01-16 22:39

代码: 全选

#!/usr/bin/perl
my($str,@array);
$str="f1 (abc), f2, f3 (def); f4";
while ($str=~/(f\d)/g){
	push @array,$1;
}
print "@array";
回复