我有以下正则表达式:
regex = /\$([a-zA-Z.]+)/
以及以下查询
query = "Show me the PE Ratio for $AAPL, $TSLA"
现在regex.match(query)
应该捕获AAPL
和TSLA
,但我得到以下内容:
#<MatchData "$AAPL" 1:"AAPL">
这是完全错误的。谁知道为什么?
请注意,此正则表达式适用于Rubular:http://rubular.com/r/j0maQHnVFF
答案 0 :(得分:3)
在Ruby
中,.match
方法只会返回第一次捕获。您需要它来返回所有捕获的匹配项,例如/g
PCRE
标记
您可以使用scan方法。 scan方法将为您提供所有匹配的数组,或者如果您传递一个块,则将每个匹配传递给该块。
<强>代码强>
query.scan(/\$([a-zA-Z.]+)/)
答案 1 :(得分:0)
修正了它,需要使用.scan而不是.match