Ruby Regex不匹配它应该是什么

时间:2014-06-04 03:00:19

标签: ruby regex

我有以下正则表达式:

regex = /\$([a-zA-Z.]+)/

以及以下查询

query = "Show me the PE Ratio for $AAPL, $TSLA"

现在regex.match(query) 应该捕获AAPLTSLA,但我得到以下内容:

#<MatchData "$AAPL" 1:"AAPL">

这是完全错误的。谁知道为什么?

请注意,此正则表达式适用于Rubular:http://rubular.com/r/j0maQHnVFF

2 个答案:

答案 0 :(得分:3)

Ruby中,.match方法只会返回第一次捕获。您需要它来返回所有捕获的匹配项,例如/g

中的PCRE标记

您可以使用scan方法。 scan方法将为您提供所有匹配的数组,或者如果您传递一个块,则将每个匹配传递给该块。

<强>代码

query.scan(/\$([a-zA-Z.]+)/) 

答案 1 :(得分:0)

修正了它,需要使用.scan而不是.match