-1

私はRubyを使用して単純な部分文字列型の一致を行っています。私は次のことが起こる理由を理解しようとしています:

irb(main):024:0> puts "match" if "foo" =~ /foo/
match
=> nil
irb(main):025:0> puts "match" if "foo" =~ /foo,/
=> nil

検索条件のいずれかの部分が「foo」に一致する場合に一致するように、この正規表現をどのように変更できますか?

4

2 に答える 2

1

あなたはあなたの比較を逆に持っています:

"foo".match(/foo,/) # See if "foo" matches the pattern "foo,"
# => nil
"foo,".match(/foo/) # See if "foo," matches the pattern "foo"
# => #<MatchData "foo"> 

演算子は、=~一目瞭然ではないため、時代遅れになっているちょっとした歴史です。

于 2012-11-14T04:03:59.703 に答える
-2

Stringのscanメソッドを使用して、チェックする正規表現を渡すことができます。

1.9.3p194 :008 > puts "match" if "foo".scan(/foo,/)
match
=> nil 
于 2012-11-14T01:14:56.217 に答える