我有一个像这样的字符串:
test:awesome my search term with spaces
我想立即将test:
后面的字符串提取到一个变量中,将其他所有内容提取到另一个变量中,因此我最终将awesome
在一个变量中,my search term with spaces
在另一个变量中。
逻辑上,我要做的是将匹配test:*
的所有内容移动到另一个变量中,然后删除第一个:
之前的所有内容,留下我想要的内容。
目前我使用/test:(.*)([s]+)/
来匹配第一部分,但我似乎不能正确地得到第二部分。
正则表达式中的第一个捕获是贪婪的,并且匹配空格,因为您使用了.
。而不是尝试:
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
使用如下:
/^test:(.*?) (.*)$/
也就是说,匹配"test:"
,然后匹配一系列字符(非贪婪),最多一个空格,再匹配另一系列字符到行尾。
我猜你想在第二次匹配之前删除所有的前导空格,因此我在表达式中有s+。否则,从表达式中删除s+,您将得到您想要的:
m = /^test:(w+)s+(.*)/.match("test:awesome my search term with spaces")
a = m[1]
b = m[2]
http://codepad.org/JzuNQxBN