正規表現で特定文字(カッコ)で囲われた文字列を取得してみよう

Rubyに限らず使われる正規表現ですが

今回は特定文字(カッコ)で囲われた文字列を取得する方法をご紹介致します。

 

ポイントは以下のとおりです。

  • カッコは[ ] と書かずに、\を付けて \[ \] とする
  • 文字列の指定は[ ]に書く。小文字英字、大文字英字はa-zA-Z
  • 文字数が複数文字の場合は+を使う

 

上記を踏まえサンプルコードは以下です。


text = <<EOS
message:[good morning]
message:[hello]
message:[good evening]
message:[good night]
EOS

p text.scan(/message:\[[a-zA-Z ]+\]/)
# => ["message:[good morning]", "message:[hello]", "message:[good evening]", "message:[good night]"]

# []の前の\を取ってみる
p text.scan(/message:[[a-zA-Z ]+]/)
# => []

# [a-zA-Z ] => [a-zA-Z] スペースを消してみる
p text.scan(/message:\[[a-zA-Z]+\]/)
# => ["message:[hello]"]

# + を消してみる
p text.scan(/message:\[[a-zA-Z ]\]/)
# => []

 

何か参考になれば幸いです(*^^*)