Ruby Regex 与应有的内容不匹配[重复]
Posted
技术标签:
【中文标题】Ruby Regex 与应有的内容不匹配[重复]【英文标题】:Ruby Regex not matching what it should be [duplicate] 【发布时间】:2014-07-24 13:28:49 【问题描述】:我有以下正则表达式:
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
【问题讨论】:
你为什么声称它是错误的?没有错。 【参考方案1】:已修复,需要使用 .scan 而不是 .match
【讨论】:
这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。 不是吗?它可以扩展和更好地表达,但它是一个答案。 @Kedarnath 对不起,我应该提到,我是 OP【参考方案2】:在Ruby
中,.match
方法只会返回第一个捕获。您需要它来返回所有捕获的匹配项,例如 PCRE
中的 /g
标志
您可以使用scan 方法。 scan 方法将给你一个包含所有匹配项的数组,或者,如果你将一个块传递给它,则将每个匹配项传递给块。
代码
query.scan(/\$([a-zA-Z.]+)/)
【讨论】:
以上是关于Ruby Regex 与应有的内容不匹配[重复]的主要内容,如果未能解决你的问题,请参考以下文章
错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头。无法重定向与应有的页面不同的页面