構文
Rubyのパターンは以下のように記述されます
/pattern/
Rubyのマッチングは以下のように記述されます。
デフォルトは大文字小文字を区別します
/pattern/ =~ "target string"
大文字小文字を区別しない時はパターンの後にiを記述します。
/pattern/i =~ "target string"
マッチングの結果は位置情報として得ることが出来ます。
一致する文字列がない場合はnil(=Javaのnull)が返ります。
マッチしないケースを調べたい場合は以下のように記述します。
/pattern/ !~ "target string"
サンプル
# 正規表現の実行 def execute_regexp(pattern, target) return pattern =~ target end def execute_not_regexp(pattern, target) return pattern !~ target end # 正規表現の結果を整形して出力 def ouput_formated_result(pattern,target,result_index) p "パターン:#{pattern},対象文字列:#{target},結果:#{result_index}" end # 正規表現を実行し、結果を整形して出力 def execute_regexp_with_formated_result(pattern,target) result_index = execute_regexp(pattern,target) ouput_formated_result(pattern,target,result_index) end # 否定の正規表現を実行し、結果を整形して出力 def execute_not_regexp_with_formated_result(pattern,target) result = execute_not_regexp(pattern,target) ouput_formated_result(pattern,target,result) end pattern_not_ignore_case = /test/ execute_regexp_with_formated_result(pattern_not_ignore_case,"test") execute_regexp_with_formated_result(pattern_not_ignore_case,"atest") execute_regexp_with_formated_result(pattern_not_ignore_case,"est") execute_regexp_with_formated_result(pattern_not_ignore_case,"Test") pattern_ignore_case = /test/i execute_regexp_with_formated_result(pattern_ignore_case,"Test") # 否定のケース execute_not_regexp_with_formated_result(pattern_not_ignore_case,"test") execute_not_regexp_with_formated_result(pattern_not_ignore_case,"aest")
出力結果
"パターン:(?-mix:test),対象文字列:test,結果:0" "パターン:(?-mix:test),対象文字列:atest,結果:1" "パターン:(?-mix:test),対象文字列:est,結果:" "パターン:(?-mix:test),対象文字列:Test,結果:" "パターン:(?i-mx:test),対象文字列:Test,結果:0" "パターン:(?-mix:test),対象文字列:test,結果:false" "パターン:(?-mix:test),対象文字列:aest,結果:true"