【问题标题】:regular expression in ruby Regexpruby 中的正则表达式 Regexp
【发布时间】:2012-12-14 09:38:33
【问题描述】:

我使用的是 ruby​​ 1.9.2

string = "asufasu isaubfusabiu safbsua fbisaufb sa {{hello}} uasdhfa s asuibfisubibas {{manish}} erieroi"

现在我必须找到 {{anyword}}

它会出现多少次以及带有花括号的名称。

看完Regexp

我正在使用

/{{[a-z]}}/.match(string) 

但它每次都返回 nil。

【问题讨论】:

    标签: ruby ruby-on-rails-3 ruby-1.9 ruby-1.9.2


    【解决方案1】:

    您需要在[a-z] 模式后面附加一个* 来告诉它匹配{s 中的任意数量的字母,然后使用scan 来获取字符串中所有匹配项:

    string.scan(/{{[a-z]*}}/)
    => ["{{hello}}", "{{manish}}"]
    

    要获得匹配的次数,只需获取结果数组的大小:

    string.scan(/{{[a-z]*}}/).size
    => 2
    

    【讨论】:

    • 不错的答案。我想补充一点,如果他需要匹配大小写字母,他需要[a-zA-Z]。干杯!
    • @sean-hill 谢谢!我同意[a-zA-Z] 可能会更好,我只是根据全小写的例子来回答。
    • 用“+”代替“*”可能会更好,因为“*”也会匹配字符串“{{}}”。
    【解决方案2】:

    正则表达式匹配 Web 应用程序 Rubular 可以成为进行实时正则表达式解析的非常有用的工具。

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 2011-08-06
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      相关资源
      最近更新 更多