Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Javaプログラマーが学ぶRuby基礎/Rubyの正規表現の基礎

概要

Ruby正規表現の基礎について説明します。

正規表現の基礎

ある文字列にパターンが当てはまるかどうか調査するための
パターンを記述する方法が正規表現です。

また、パターンを当てはめることをマッチングと言います。

構文

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"