正規表現で規則的に配列で文字列を取得してみよう

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

今回は規則的に配列で文字列を取得する方法をご紹介致します。

 

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

  • 対象文字列を( )で囲う
  • キャプチャする必要がない文字は ?: をつける(?: )?
  • 0文字以上の場合は .* を使う(1文字以上は.+)

 

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


text = <<EOS
point1,check point_text1
point2,point_text2
point3,
EOS

p text.scan(/([a-z0-9_]+),(.*)/)
# => [["point1", "check point_text1"], ["point2", "point_text2"], ["point3", ""]]

# check の文字列は取得しない
p text.scan(/([a-z0-9_]+),(?:check )?(.*)/)
# => [["point1", "point_text1"], ["point2", "point_text2"], ["point3", ""]]

 

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