正規表現を使って完全一致をテストするにはどうすればいいですか?正規表現を使ってRubyで正確なパターンマッチングを見つける
"car".match(/[ca]+/)
がtrueを返します。
regexパターンに "r"が含まれていないため、上記の文をfalseに戻す方法はありますか? "c"と "a"以外の文字を含む文字列はfalseを返すはずです。偽
正規表現を使って完全一致をテストするにはどうすればいいですか?正規表現を使ってRubyで正確なパターンマッチングを見つける
"car".match(/[ca]+/)
がtrueを返します。
regexパターンに "r"が含まれていないため、上記の文をfalseに戻す方法はありますか? "c"と "a"以外の文字を含む文字列はfalseを返すはずです。偽
を返す必要があります
"acacacccは、" 真
"acacacxcc" を返す必要があり、それにいくつかのアンカーを追加します。
/^[ca]+$/
あなただけのアンカーを必要とします。
"car".match(/^[ca]+$/)
「^」と「$」は「開始」と「終了」の文字列を意味するので、これは、「C」または「A」で構成される文字列全体を強制します。それらがなければ正規表現は文字列のどの部分にも一致する限り成功します。
この
"car".match /^(a|c)+$/
の周りあなたのロジックを回して、悪い事を探してみてください:
string.match(/[^ca]/)
string.index(/[^ca]/)
上記のいずれかがnil以外である場合、あなたが悪いの文字列を持っています。例えば
if string.index(/[^ca]/).nil?
# You have a good string
else
# You have a bad string
を::
>> "car".index(/[^ca]/).nil?
=> false
>> "caaaacaac".index(/[^ca]/).nil?
=> true
はこれを試してみてください:
"car".match(/^(?:c|a)$/)
ません: '" C \ nXをあなただけテストし、それがその後、一致する場所を気にしないしたい場合".match(/^[ca] + $ /)'と入力します。 –
このアンカーは正しくありません。 Chris Healdの答えに対するコメントをご覧ください。 – skalee