【问题标题】:Ruby Regex not matching what it should be [duplicate]Ruby Regex 与应有的内容不匹配[重复]
【发布时间】: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

【问题讨论】:

  • 你为什么声称它是错误的?没有错。

标签: ruby regex


【解决方案1】:

已修复,需要使用 .scan 而不是 .match

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • 不是吗?它可以扩展和更好地表达,但它是一个答案。
  • @Kedarnath 对不起,我应该提到,我是 OP
【解决方案2】:

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

您可以使用scan 方法。 scan 方法将给你一个包含所有匹配项的数组,或者,如果你将一个块传递给它,则将每个匹配项传递给块。

代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2012-09-22
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    相关资源
    最近更新 更多