正規表現の使い方

正規表現の使い方

正規表現で便利なものや、使い方が複雑なものを備忘録としてまとめます。

キャプチャグループ

[1] pry(main)> '123456789'.gsub(/^(\d{3}).*(\d{5})$/, '\1\2')
=> "12356789"

# キャプチャ: ()で括るとその部分がキャプチャされ、キャプチャされたものは最初から順に1から番号が割り当てられ、
第二引数にその番号を上記のように記載するとキャプチャされた部分だけを取得できる。

# グループ化: ()で括るとその部分がグループ化され、グループ化された部分が1つの塊として認識される。
その塊の後に[+]などを使用すると、塊で始まりそれ以降の任意の文字が[+]部分として許容されるようになる。
下記がそのイメージ検証

# つまり()で括るとキャプチャとグループ化の2つが行われる!

[1] pry(main)> 'abcabcabc'.gsub(/^(abc)/, 'z')
=> "zabcabc"
[2] pry(main)> 'abcabcabc'.gsub(/^abc/, 'z')
=> "zabcabc"
[3] pry(main)> 'abcabcabc'.gsub(/abc/, 'z')
=> "zzz"
[4] pry(main)> 'abcabcabc'.gsub(/(abc)/, 'z')
=> "zzz"
[5] pry(main)> 'abcabcabc'.gsub(/(abc)+/, 'z')
=> "z"
[6] pry(main)> 'abcabcabc'.gsub(/abc+/, 'z')
=> "zzz"

参考記事

今日からはじめよう、正規表現 in Ruby (()を使おう(キャプチャ・グループ化)編) - woshidan's blog