请教 如何获取指定第n个特定字符前的串。

用split就好啦...


QUOTE:
原帖由 apile 于 2008-1-8 15:28 发表
用split就好啦...

对呀 split完之后在join
谢谢大家的回复。。

不过看不懂这个什么意思:

QUOTE:
$str =~ /(([^ ]* ){3}).*/
这个会把第3个空格带出来
如果不想要第3个空格:
$str =~ /([^ ]*( [^ ]*){2}).*/



QUOTE:
原帖由 topgungo 于 2008-1-8 15:51 发表
谢谢大家的回复。。

不过看不懂这个什么意思:

#!/usr/bin/perl
use warnings;

$str = "a  bc  e a sss";
$str =~ /([^ ]*( [^ ]*){2}).*/;
print "$1\n";


QUOTE:
原帖由 apile 于 2008-1-8 15:28 发表
用split就好啦...

Yes! split() makes this task simple.
Sample code:

QUOTE:
perl -e  '$s="a bc e a sss";$pos=3; print join",", (split(/\s/, $s,$pos+1))[0..$pos-1]'

--ulmer

The next shell revolution: *nix Shell or W$ PowerShell ?


QUOTE:
原帖由 topgungo 于 2008-1-8 14:05 发表


老大,如果要取第100个,那不是要写n长。。

1. qr再x
或者
2. 替换正则本身.
@str=split(" ",$tt);
$max=3;
$str2="";
for($i=0,$i<=$max,++$i){
$str2="$str2$str[$i] ";
}
print $str2;

呵呵,可以用全局匹配。。

$count=0;
$value="";
while( $pattern =~ /.*?\ /g ){
    $value .= $&;
    $count ++;
    last if $count==3;
}
print $value;