私はRubyを使用して単純な部分文字列型の一致を行っています。私は次のことが起こる理由を理解しようとしています:
irb(main):024:0> puts "match" if "foo" =~ /foo/
match
=> nil
irb(main):025:0> puts "match" if "foo" =~ /foo,/
=> nil
検索条件のいずれかの部分が「foo」に一致する場合に一致するように、この正規表現をどのように変更できますか?
あなたはあなたの比較を逆に持っています:
"foo".match(/foo,/) # See if "foo" matches the pattern "foo,"
# => nil
"foo,".match(/foo/) # See if "foo," matches the pattern "foo"
# => #<MatchData "foo">
演算子は、=~
一目瞭然ではないため、時代遅れになっているちょっとした歴史です。
Stringのscanメソッドを使用して、チェックする正規表現を渡すことができます。
1.9.3p194 :008 > puts "match" if "foo".scan(/foo,/)
match
=> nil