Here is what I want:
:-) perl -MData::Dumper -MRegexp::Common -le '$a="15678.91 ml; .121 0.12312 >
$VAR1 = [
'15678.91',
' ml; ',
'.121',
' ',
'0.12312',
' ',
'12313.',
' r',
'45.12',
' '
];
$VAR1 = [
'15678.91',
' ml; ',
'.121',
' ',
'0.12312',
' ',
'12313.',
' r',
'45.12',
' '
];
From: tiger peng <tigerpeng2001@yahoo.com>
To: china-pm@pm.org
Sent: Thu, October 22, 2009 9:59:15 PM
Subject: Re: [PerlChina] split function and zero-width seperator
Thank. I thought the seperator would lost. I just read perldoc -f split, which says, "If the PATTERN contains parentheses, additional list elements are created from each matching substring in the delimiter."
From: cnhack TNT <cnhacktnt@gmail.com>
To: china-pm@pm.org
Sent: Thu, October 22, 2009 7:57:37 PM
Subject: Re: [PerlChina] split function and zero-width seperator
perl -MData::Dumper -le '$a="15678.91 ml; r45.12 "; @a=grep !/^\s*$/, split /([\d\.]+)/, $a; print Dumper \@a'
the regex pattern for split don't need to be that complicated. :-)
2009/10/23 tiger peng <tigerpeng2001@yahoo.com>
Hello everyone,I am trying to isolate numbers from string, manipulate the numbers then put them back to original positions in the string. When I try to use zero-width separator, the split function looks weird, it generated much more elements than I expect.Are there any mistakes? Why the split behaviors like this? (The regexp looks right when I used it s///)Could anyone help?Thanks,Tiger#build the seperator:-) perl -le '$a = "15678.91 ml; r45.12 ";$a =~ s/((?!(\d|\.))(?<=(\d|\.)))|((?=(\d|\.))(?<!(\d|\.)))/|/g;print $a'
|15678.91| ml; r|45.12|#use the seperator in split:-) perl -MData::Dumper -le '$a = "15678.91 ml; r45.12 ";@a = split /((?!(\d|\.))(?<=(\d|\.)))|((?=(\d|\.))(?<!(\d|\.)))/, $a;print Dumper(@a)'
$VAR1 = '15678.91';
$VAR2 = '';
$VAR3 = undef;
$VAR4 = '1';
$VAR5 = undef;
$VAR6 = undef;
$VAR7 = undef;
$VAR8 = ' ml; r';
$VAR9 = undef;
$VAR10 = undef;
$VAR11 = undef;
$VAR12 = '';
$VAR13 = '4';
$VAR14 = undef;
$VAR15 = '45.12';
$VAR16 = '';
$VAR17 = undef;
$VAR18 = '2';
$VAR19 = undef;
$VAR20 = undef;
$VAR21 = undef;
$VAR22 = ' ';
_______________________________________________
China-pm mailing list
China-pm@pm.org
http://mail.pm.org/mailman/listinfo/china-pm
没有评论:
发表评论