我目前正在尝试将一个字符串拆分成多个变量。 例如字符串:
ryan_string = "RyanOnRails: This is a test"
我已经使用这个正则表达式进行匹配,其中包含3个组:
ryan_group = ryan_string.scan(/(^.*)(:)(.*)/i)
现在要访问每个组,我必须像这样做:
ryan_group[0][0] (first group) RyanOnRails
ryan_group[0][1] (second group) :
ryan_group[0][2] (third group) This is a test
这似乎相当荒谬,感觉我做错了什么。我期望能够像这样做些事情:
g1, g2, g3 = ryan_string.scan(/(^.*)(:)(.*)/i)
这是否可能?还有比我当前的方法更好的方式吗?
`one, two, three = string.match(/(^.*)(:)(.*)/i).try(:captures)`
这样做可以避免出现错误。 - Andrea Salicetti&.
运算符将其放回一行,甚至在只有一个捕获组时使用两次。例如,string.match(regex)&.captures&.first
。 - Gerry Shaw