ruby 正则表达式

标签 ruby regex

我了解如何在 ruby​​ 中使用正则表达式检查字符串中的模式。我感到困惑的是如何将在字符串中找到的模式保存为单独的字符串。

我想我可以这样说:

if string =~ /regexp/ 
  pattern = string.grep(/regexp/)

然后我就可以继续我的生活了。但是,这并没有按预期工作,而是返回了整个原始字符串。有什么建议吗?

最佳答案

您正在寻找 string.match()在 ruby 中。

irb(main):003:0> a
=> "hi"
irb(main):004:0> a=~/(hi)/
=> 0
irb(main):005:0> a.match(/hi/)
=> #<MatchData:0x5b6e8>
irb(main):006:0> a.match(/hi/)[0]
=> "hi"
irb(main):007:0> a.match(/h(i)/)[1]
=> "i"
irb(main):008:0> 

但也可以使用 $& $1..$9 来处理您刚刚在 if 条件中匹配的内容$~ 这样:

irb(main):009:0> if a =~ /h(i)/
irb(main):010:1> puts("%s %s %s %s"%[$&,$1,$~[0],$~[1]])
irb(main):011:1> end
hi i hi i
=> nil
irb(main):012:0> 

关于 ruby 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1414166/

相关文章:

javascript - 如何打印包含特定字符串的行?

regex - 生成适合 Guids 的单词(仅供娱乐)

调用方法时的 Ruby 变量行为

regex - 如何替换正则表达式匹配中的字符串

ruby - 什么是 Ruby <=>(宇宙飞船)运算符?

mysql - Rails 调用同一个表中的不同字段

r - 按参数模式和左连接进行匹配

java - 如何在正则表达式中提供 OR 运算符?

ruby - 使用 MRI 生成竞争条件

ruby-on-rails - 字符串不会出现