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

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

比如字符串: "a  bc  e a sss"
现在要取到第3个空格前面的串,怎么用perl的正则表达式取?
有人吗,来呀,英雄。。
index
substr
($str)=$a=~/(^\S+\s\S+\s\S+)\s/;可否?


QUOTE:
原帖由 doiob 于 2008-1-8 13:48 发表
($str)=$a=~/(^\S+\s\S+\s\S+)\s/;可否?

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


QUOTE:
原帖由 ly5066113 于 2008-1-8 13:43 发表
index
substr

这个不行吧,不能指定到第n个出现的位置,只能到第一个吧。。


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


这个不行吧,不能指定到第n个出现的位置,只能到第一个吧。。

index有3个参数


QUOTE:
原帖由 ly5066113 于 2008-1-8 14:29 发表

index有3个参数

你说的是index的第三个参数OFFSET吧,可是并不是这个意思。
OFFSET是指跳过前面n的字符,而楼主的意思是跳过前面第n个特定的字符。
比如,串 aabccbx..xbmmmb,现在要的是第3个b前面的所有字符..


QUOTE:
原帖由 maxxfire 于 2008-1-8 14:56 发表


你说的是index的第三个参数OFFSET吧,可是并不是这个意思。
OFFSET是指跳过前面n的字符,而楼主的意思是跳过前面第n个特定的字符。
比如,串 aabccbx..xbmmmb,现在要的是第3个b前面的所有字符..

index配合substr一起使用。
正则也想到了个方法:

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