在扫描或正则表达式模式中的模式中提取Ruby字符串

时间:2013-08-01 12:50:55

标签: ruby regex

我正在使用Ruby 2.0。我现在有一串:

str = "bar [baz] foo [with] another [one]"

str.scan(/\[.*\]/)

输出结果为:

["[baz] foo [with] another [one]"]

我希望它更像是:

["[baz]","[with]","[one]"]

所以我基本上需要将“[]”之间的所有内容放入数组中。有人可以告诉我我错过了什么吗?

2 个答案:

答案 0 :(得分:4)

你的.*贪婪,所以直到最后一个括号才会停止。

您需要使用延迟量词.*?或仅使用非括号:[^\]]*

答案 1 :(得分:2)

默认情况下正则表达式是贪婪的,所以你的正则表达式从第一个[到最后一个]抓取所有内容。让它像非贪婪一样:

str.scan(/\[.*?\]/)