我正在使用Ruby 2.0。我现在有一串:
str = "bar [baz] foo [with] another [one]"
str.scan(/\[.*\]/)
输出结果为:
["[baz] foo [with] another [one]"]
我希望它更像是:
["[baz]","[with]","[one]"]
所以我基本上需要将“[]”之间的所有内容放入数组中。有人可以告诉我我错过了什么吗?
答案 0 :(得分:4)
你的.*
贪婪,所以直到最后一个括号才会停止。
您需要使用延迟量词.*?
或仅使用非括号:[^\]]*
答案 1 :(得分:2)
默认情况下正则表达式是贪婪的,所以你的正则表达式从第一个[到最后一个]抓取所有内容。让它像非贪婪一样:
str.scan(/\[.*?\]/)