如何使用Ruby中的Regex从这个字符串中提取单词“!! one !! ** two ** @@ three @@”

时间:2010-10-08 02:46:35

标签: ruby regex

在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 *“。

感谢。

1 个答案:

答案 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"]]

http://ruby-doc.org/core/classes/String.html#M000812