我有一个类似的字符串:
test:awesome my search term with spaces
我想在test:
后立即将字符串提取到一个变量中,然后将其他所有内容提取到另一个变量中,所以我最终会在一个变量中awesome
和my search term with spaces
中另一个。
从逻辑上讲,我所做的就是将匹配test:*
的所有内容移动到另一个变量中,然后在第一个:
之前移除所有内容,留下我想要的内容。
目前我正在使用/test:(.*)([\s]+)/
来匹配第一部分,但我似乎无法正确获得第二部分。
答案 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]