式/^a-eg-h/.match('f')
は、Rubyインタプリタ(2.3.1)で私にnil
を与えます。私は何が間違っているのか理解できません。/^a-eg-h/.match('f ')はRubyでnullを返します
提案がありますか?
Rubyドキュメントの状態 'above expressionは#<MatchData "f">
'を返します。
式/^a-eg-h/.match('f')
は、Rubyインタプリタ(2.3.1)で私にnil
を与えます。私は何が間違っているのか理解できません。/^a-eg-h/.match('f ')はRubyでnullを返します
提案がありますか?
Rubyドキュメントの状態 'above expressionは#<MatchData "f">
'を返します。
コメントに記載されているとおり、パターンが正しくありません。 character classを使用しようとしていますが、角かっこで囲まれていないようです。あなたのパターンは現在のように、リテラルテキストa-eg-h
で始まる文字列にのみ一致します。あなたが望むパターンは次のとおりです。また
/[^a-eg-h]/
、文字列がパターンに一致しないと、失敗して、Rubyでnil
を返します。このパターンで文字列j
に一致するようにしよう。この問題を解決するには、
match = /[^a-eg-h]/.match(str)
if (match)
do_something()
end
@ t.niese:固定、ありがとう。 –
_ "文字列fとこのパターンを一致させようとすると失敗します" _ - どういう意味ですか? '/ [^ a-eg-h] /。match( 'f')'はうまく動作します。 – Stefan
のようになります。あなたの正規表現は 'a-eg-h'で始まる文字列にのみマッチします。あなたは '[]'の中で定義されている範囲を探すのがもっともです。 –
あなたは '/ [^ a-eg-h] /。( 'f')'ではなく、 '/^a-eg-h/.match'(' f ') 'とマッチすることを意味します。 –