正则表达式让所有角色都在第一个空间的右边?

时间:2013-09-24 15:18:57

标签: regex

我正在尝试制作一个正则表达式,它将匹配字符串中第一个空格后的所有字符。但

输入文字:

foo bar bacon

期望的比赛:

bar bacon

到目前为止,我发现的最接近的是:

\s(.*)

然而,这与“bar bacon”之外的第一个空间相匹配,这是不合需要的。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:5)

您可以使用positive lookbehind

(?<=\s).*

demo

虽然看起来你已经在你当前的正则表达式中放置了一个捕获组.*,所以你可以尝试抓住它。

答案 1 :(得分:1)

你也可以尝试这个

(?s)(?<=\S*\s+).*

(?s)\S*\s+(.*)//group 1 has your match

(?s) .也会匹配换行符

答案 2 :(得分:1)

我更喜欢使用[[:blank:]],因为它与新行不匹配,以防万一我们的目标是mutli。它也与那些不支持\s的人兼容。

(?<=[[:blank:]]).*

答案 3 :(得分:1)

你不需要看后面。

my $str = 'now is the time';
# Non-greedily match up to the first space, and then get everything after in a group.
$str =~ /^.*? +(.+)/; 
my $right_of_space = $1; # Keep what is in the group in parens
print "[$right_of_space]\n";