#はじめに
正規表現を覚え始めたため、その使い方について備忘も兼ねて記述します。
#サンプルコード
以下のようなプロフィールがあるとします。
text = <<TEXT
生年月日:1234年5月6日生まれ
郵便番号:789-1111
TEXT
#生年月日から数字のみを抽出したい場合
(\d+)年(\d+)月(\d+)日
#=> 1234,5,6 が抽出される。
#=>下は年月日の漢字もマッチしてしまう。
\d+年\d+月\d+日
#=>1234年5月6日
###正規表現のメタ文字の意味
\d ・・・ 半角数字(桁は問わない)
+ ・・・ 直前の文字やパターンが1回以上連続している
() ・・・ 内部でマッチした文字列をキャプチャまたはグループ化
年,月,日 ・・・メタ文字ではなく、ただの文字列
#郵便番号の間にハイフン"-"を除きたい場合
p text[/\d{3}-\d{4}/].gsub('-','')
#=>7891111
###正規表現のメタ文字やメソッドの意味
/(正規表現)/ ・・・正規表現オブジェクトは/で囲んで作成する(「Rubyにおける正規表現リテラル」という)
[]・・・文字列から正規表現にマッチした部分を抜き出すStringクラスのメソッド。エイリアスメソッドは、sliceメソッド。
{3},{4}・・・直前の文字(この場合は\d)が、{}で囲んだ数だけ連続する
- ・・・メタ文字ではなく、ただのハイフン。(ハイフンは、記述の仕方によっては「文字の範囲」を表す場合もあるため注意)
gsub('第1引数','第2引数')・・・第1引数にマッチした文字列を第2引数の文字列で置き換える。上記の場合、文字列"-"を""(削除を意味する)に変換している。
なお、sliceメソッドやgsubメソッドには、それぞれ「破壊的メソッド(※)」が用意されている。
(※)呼び出したオブジェクトの状態を変更してしまうメソッド。末尾に"!"を付ける。
#正規表現のテストができるツール
正規表現は、メタ文字を駆使するため試行錯誤できるツールがを使うと、視覚的に確認できます。
#終わりに
文字列の検索や置換で威力を発揮する正規表現。
近いうちに使いこなしたいと思い、まずは初歩的な学習内容を記述しました。
ここまで読んでくださり、ありがとうございました。