我有像这样的文字行
"name carl (verified)"
我怎么能得到类似的东西:
["name", "carl", "verified"]
我正在使用:
text.scan(/\((.*?)\)/)
但它只在()
内匹配。
答案 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"]