如何从单线正确提取

时间:2016-04-08 00:05:20

标签: ruby regex

我有像这样的文字行

"name                       carl (verified)"

我怎么能得到类似的东西:

["name", "carl", "verified"]

我正在使用:

text.scan(/\((.*?)\)/)

但它只在()内匹配。

4 个答案:

答案 0 :(得分:2)

"name                       carl (verified)".scan(/\w+/)
# => ["name", "carl", "verified"]

答案 1 :(得分:1)

这里直截了当的方式包括对存在多少空间的更多松懈:

m = text.match(/\A(\w+)\s+(\w+)\s*\(([^)]*)\)\s*\z/)

然后,您可以从m获取数据,例如m[1],等等。

这里的想法是你需要在你的字符串上有三个单独的捕获。 scan非常适合删除重复模式,但对于一次性提取则非常有用。

答案 2 :(得分:0)

使用字符类:

text.scan(/[^\s()]+/)

答案 3 :(得分:0)

"name                       carl (verified)".delete("()").split
  #=> ["name", "carl", "verified"]