我理解如何在ruby中使用regexp检查字符串中的模式.我很困惑的是如何将字符串中找到的模式保存为单独的字符串.
我想我可以这样说:
if string =~ /regexp/
pattern = string.grep(/regexp/)
Run Code Online (Sandbox Code Playgroud)
然后我可以继续我的生活.但是,这不能按预期工作,并返回整个原始字符串.有什么建议?
你正在寻找string.match()红宝石.
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>
Run Code Online (Sandbox Code Playgroud)
但是也可以使用if条件匹配你可以使用的$& $1...... $9以及$~如此:
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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2005 次 |
| 最近记录: |