1

我有一个类似的字符串:

test:awesome my search term with spaces

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

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

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

4

3 回答 3

5

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

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
于 2013-04-01T19:48:46.640 回答
4

使用以下内容:

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

也就是说, match "test:",然后是一系列字符(非贪婪),最多一个空格,以及另一系列字符到行尾。

于 2013-04-01T19:48:24.800 回答
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

于 2013-04-02T14:06:32.433 回答