我正在使用Ruby来做一个简单的子串类型匹配。我试图理解为什么会发生以下情况:
irb(main):024:0> puts "match" if "foo" =~ /foo/
match
=> nil
irb(main):025:0> puts "match" if "foo" =~ /foo,/
=> nil
如何修改此正则表达式,以便在搜索条件的任何部分与“foo”匹配时进行匹配?
答案 0 :(得分:1)
你的比较倒退了:
"foo".match(/foo,/) # See if "foo" matches the pattern "foo,"
# => nil
"foo,".match(/foo/) # See if "foo," matches the pattern "foo"
# => #<MatchData "foo">
=~
运算符的历史已经过时了,因为它不是不言自明的。
答案 1 :(得分:-2)
您可以使用String的扫描方法并传入要检查的正则表达式。
1.9.3p194 :008 > puts "match" if "foo".scan(/foo,/)
match
=> nil