【问题标题】:Ruby: hexadecimal in regular expressionsRuby:正则表达式中的十六进制
【发布时间】:2011-10-03 04:44:52
【问题描述】:

我需要在 Ruby(实际上是 Rails)程序的正则表达式中匹配 md5 校验和。我在某处发现可以将十六进制字符串与\h 序列匹配,但我再也找不到链接了。

我正在使用该序列,并且我的代码在 Ruby 1.9.2 中运行。即使在普通的 IRB 下我也可以让它工作(所以它不是 Rails 扩展)。

ruby-1.9.2-p180 :007 > "123abcdf" =~ /^\h+$/; $~
 => #<MatchData "123abcdf"> 
ruby-1.9.2-p180 :008 > "123abcdfg" =~ /^\h+$/; $~
 => nil 

但是我的 IDE 将该表达式标记为错误,并且我找不到任何引用该序列的参考。

在任何环境/版本下,Ruby Regex 中的 \h 序列是否合法,还是我应该相信我的 ide 并将其替换为 [abcdef\d] 之类的东西?

【问题讨论】:

标签: ruby regex hex


【解决方案1】:

是的。查看 the official doc 以获取 Ruby 中正则表达式的完整文档。

注意\h也会匹配大写字母,所以它实际上等价于[a-fA-F\d]

【讨论】:

  • 完美,正是我所需要的。感谢您的回答。
  • 一个小注释——它也会匹配整数,所以整个类是 [a-fA-Z0-9]。
  • @jdc: \d[0-9] 相同
  • “这个 SO 答案”的链接不再有效:stackoverflow.com/questions/4160739/…
【解决方案2】:

根据this,\h 是 oniguruma 的一部分,我相信这是 ruby​​ 1.9 中的标准。

【讨论】:

    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2012-07-12
    • 2010-10-20
    • 2021-06-04
    • 2017-02-27
    相关资源
    最近更新 更多