在IRB,我可以这样做:
c = /(\ b \ w + \ b)\ W *(\ b \ w + \ b)\ W *(\ b \ w + \ b)\ W * / .match(“!! one ** * 两个 * @@三@@“”)
得到这个:
=> MatchData“one ** * two * @@ three @@”1:“one”2:“two”3:“three”
但假设我事先不知道单词的数量,我怎样才能从字符串中提取所有单词“。例如,它可能是”!!一个** * 两个 * @@ three @@“在一个实例中,但在另一个实例中可能是”!! five ** * six *“。
感谢。
答案 0 :(得分:4)
> " !!one** *two* @@three@@ ".scan(/\w+/)
=> ["one", "two", "three"]
此外,scan
可以在使用()
时返回数组数组。
> "Our fifty users left 500 posts this month.".scan(/([a-z]+|\d+)\s+(posts|users)/i)
=> [["fifty", "users"], ["500", "posts"]]