Ruby:正则表达式中的十六进制
Posted
技术标签:
【中文标题】Ruby:正则表达式中的十六进制【英文标题】:Ruby: hexadecimal in regular expressions 【发布时间】: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]
之类的东西?
【问题讨论】:
你应该检查 /\A\h+\Z/ 见sakurity.com/blog/2015/06/04/mongo_ruby_regexp.html 【参考方案1】:是的。查看 the official doc 以获取 Ruby 中正则表达式的完整文档。
注意\h
也会匹配大写字母,所以它实际上等价于[a-fA-F\d]
【讨论】:
完美,正是我所需要的。感谢您的回答。 一个小注释——它也会匹配整数,所以整个类是 [a-fA-Z0-9]。 @jdc:\d
与 [0-9]
相同
“这个 SO 答案”的链接不再有效:***.com/questions/4160739/…。【参考方案2】:
根据this,\h 是 oniguruma 的一部分,我相信这是 ruby 1.9 中的标准。
【讨论】:
以上是关于Ruby:正则表达式中的十六进制的主要内容,如果未能解决你的问题,请参考以下文章