LoginSignup
0
0

More than 3 years have passed since last update.

Rubyの正規表現について(メタ文字、キャプチャ、関連メソッド)

Posted at

はじめに

 正規表現を覚え始めたため、その使い方について備忘も兼ねて記述します。

サンプルコード

以下のようなプロフィールがあるとします。

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メソッドには、それぞれ「破壊的メソッド(※)」が用意されている。
(※)呼び出したオブジェクトの状態を変更してしまうメソッド。末尾に"!"を付ける。

正規表現のテストができるツール

正規表現は、メタ文字を駆使するため試行錯誤できるツールがを使うと、視覚的に確認できます。
reg_exp.png

終わりに

文字列の検索や置換で威力を発揮する正規表現。
近いうちに使いこなしたいと思い、まずは初歩的な学習内容を記述しました。
ここまで読んでくださり、ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0