Ruby Regex gsub - 字符串之后的所有内容

时间:2013-04-01 19:46:11

标签: ruby regex gsub

我有一个类似的字符串:

test:awesome my search term with spaces

我想在test:后立即将字符串提取到一个变量中,然后将其他所有内容提取到另一个变量中,所以我最终会在一个变量中awesomemy search term with spaces中另一个。

从逻辑上讲,我所做的就是将匹配test:*的所有内容移动到另一个变量中,然后在第一个:之前移除所有内容,留下我想要的内容。

目前我正在使用/test:(.*)([\s]+)/来匹配第一部分,但我似乎无法正确获得第二部分。

3 个答案:

答案 0 :(得分:4)

正则表达式中的第一个捕获是贪婪的,并且因为您使用了.而匹配空格。而是尝试:

matches = string.match(/test:(\S*) (.*)/)
# index 0 is the whole pattern that was matched
first = matches[1] # this is the first () group
second = matches[2] # and the second () group

答案 1 :(得分:3)

使用以下内容:

/^test:(.*?) (.*)$/

即匹配"test:",然后是一系列字符(非贪婪),最多一个空格,另一系列字符到行尾。

答案 2 :(得分:0)

我猜你想要在第二场比赛之前删除所有前导空格,因此我在表达式中有\ s +。否则,从表达式中删除\ s +,你就会得到你想要的东西:

m = /^test:(\w+)\s+(.*)/.match("test:awesome my search term with spaces")
a = m[1]
b = m[2]

http://codepad.org/JzuNQxBN