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)应该捕获AAPLTSLA,但我得到了以下信息:

#<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]:在将标头发送到客户端后无法设置标头。无法重定向与应有的页面不同的页面

如果输入与 REGEX 不匹配,则循环回到代码的开头 | Python 2.7 [重复]

RegEx 在第二次破折号出现后匹配任何内容[重复]

正则表达式:一种特殊情况不匹配[重复]

ruby 使用RegEx进行字符串提取 - 替换匹配

boost 多边形相交 API 的工作方式与应有的方式相反