スポンサーリンク

【Ruby】正規表現って何??

みなさんこんにちは!
のむ(@nomu_engineer)です!

今回はRubyの正規表現について学習したので、まとめてました。

この記事を読むこメリット
・Rubyの正規表現について知ることができる。
・エンジニアへの道が一歩近づく

この記事を読むおすすめの読者
・プログラミング初心者
・駆け出しエンジニア

それでは早速正規表現とは何なのかについてまとめていきます。

正規表現とは

正規表現についてまとめていきたいと思います。
正規表現は僕が学習しているカリキュラムにはこのように書いてありました。
「文字列の一部分を抽出、置換したり文字列が制約を見たいしているかを調べる表現方法」と。

つまるところ、「文字列に特定の文字が含まれているのを確認したり、特定の文字を取り除くなとの操作を行い、統一した形式に揃えること」ということです。

正規表現は実際にどんな時に使うのかというと、ユーザーに電話番号を登録してもらう際に、ハイフンを入れるユーザーと入れないユーザーがいます。

その時に、ハイフンがあるものとないもので一緒に混ぜると、ごちゃごちゃになってしまいます。
管理しにくいものになってしまいます。

なので、このハイフンをけしてあげるように正規表現をすることで、全てハイフンなしにデータベースに登録できるようになります。

それでは実際にどうやってハイフンを消すことができるのか。
それはsubメソッドを使います。

このメソッドは文字列の指定した部分を別の文字に置き換えることができるメソッドです。
ん?と思った人いると思います。

ハイフンを消すと言っているのに、なんで文字を置き換えるメソッドなのかと、

文字を置き換えるメソッドを使ってハイフンを「空文字」に置き換えます。
そうすることで、ハイフンを取り除くことができます。

書き方としては、第一引数に置き換えたい文字、第二引数に返還後の文字列を入力します。
置き換えたい文字である、第一引数は文字を「/   /」(スラッシュ)で囲む必要があります。

記述例
test = "ラーメンが食べたい"
puts test
=> "ラーメンが食べたい"

test.sub(/ラーメン/,"チキン南蛮")
puts test
=>   "チキン南蛮が食べたい"

みたいな感じで、文字を置き換えることができます。

しかし、subメソッドで置き換えれるのは最初のラーメンのみです。
“ラーメン食べたい、ラーメン食べたい”という文字列をさっきと同じ容量で、チキン南蛮に置き換えようとすると、”チキン南蛮食べたい、ラーメン食べたい”と言った感じになってしまいます。

こうなってくると、電話番号のハイフンも2つ以上あるので、subメソッドでは最初のハイフンしか取り除くことができません。

ここで新しくメソッドを使います。
それがgsubメソッドです。

gsubメソッドのgはグローバルマッチと呼ばれ、文字列内で指定した文字が複数含まれる場合、その全てを置き換えることができるメソッドです。
それでは実際にsubメソッドとgsubメソッドでどのように違うのか見てわかるようにコードを記述してみたいと思います。

test = “080-1234-5678”
puts test
=> ”080-1234-5678″

test.sub(/-/,””)
puts test
=>   “0801234-5678”

このようにsubメソッドでは最初のハイフンしか取り除けません。
次にgsubメソッドを使ってみたいと思います。

test = “080-1234-5678”
puts test
=> ”080-1234-5678″

test.gsub(/-/,””)
puts test
=>   “08012345678”

このようにgsubメソッドを使うことで全てのハイフンを取り除くことができました。
これをバリデーションの設定の時に設定しておくことで、データを受け取る際にハイフンありの電話番号のハイフンを取り除くことができ、ハイフンなしの電話番号の取得に統一することができます。

これが正規表現の一つになります。

正規表現の使い方は他にもあります。
時間がないので詳細な説明はしませんが、以下になります。

・パスワードの文字数を8文字以上と制限する
・郵便番号の正規表現(数字3文字から始まり、「ー」ハイフンが間に入り、最後に数字4文字であるものという制限)
・パスワード英数字が混合しているもの。

以上のように、正規表現は色々種類があります。
正規表現を使うことで、バリデーションを細かく設定できるというイメージです。

まだ書きたいことはたくさんあるのですが、時間が時間なので、この辺にしておきます。

最後におさらいということで、正規表現とはどういうものなのかというと、文字列に特定の文字が含まれているかの確認や、特定の文字を取り除くなどの操作を行うための技術です。

僕もまだ、正規表現の入り口を叩いたくらいなのでこれからもっと勉強していきます。

スポンサーリンク




この記事を書いた人