見出し画像

正規表現 使用方法

はじめに

正規表現とは?

 正規表現とは、文字列の一部分を取り出したり(抽出)、入れたり(置換)できる表現方法です。また、文字列が条件を満たしている(制約)かを調べることができます。
例:個人情報の登録に大文字の英数字や記号も含めないと登録できない場合、入力されたpasswordに大文字の英数字や記号が含まれているか判断しているもの。

目的

 正規表現の目的としては、上記の例でも挙げたように決められた条件に従ってシンプルに文字を表現できるようにし、効率的に処理できるようにすることです。

 今回は、Rubyを使用して正規表現を学んでいきます。抽出、置換、制約の順に説明します。

・抽出

 では、メールアドレス(例:sakana@sakana.com)から@までの文字列のみ抽出してみたいと思います。この時、matchメソッドを使用します。
matchメソッドは、引数に指定した文字列が含まれているかを調べるものです。このメソッドを使用してsakana@sakana.comから@までの文字列を取り出しています。

mail = "sakana@sakana.com"

#メールアドレスから@までを抽出
mail.match(/([^@]+)@/) #(/([^@]+)@/)では@までの文字列を指定

#出力結果
sakana@


・置換

 先ほど使用したsakana@sakana.comのメールアドレスを使用して、sakanaの文字列をanimalに置換してみます。
gsubメソッドを使用しています。gsubメソッドとはグローバルsubメソッドのことで、指定した文字が文字列内に2つ以上含まれているとき、すべてを置換することができるものです。(最初に一致した文字だけを置換したい場合は、subメソッドを使用すると1つだけ置換することができます。)

mail = "sakana@sakana.com"

mail.gsub(/sakana/,"animal")

#実行結果
animal@animal.com


・制約


 制約では、例えば何らかのpasswordを登録する場合、英数字7文字以上で登録できますと表示されることがあります。この時に、制約を使用します。

今回のpasswordは、7字以上15字以内の英数字を含む文字列であるという条件を付けます。また、passwordは「Sakana123456」とします。passwordが条件を満たしているかを確認するためには以下のコードを記載します。

password = sakana123456

password.match(/[a-z\d]{7,15}/i)

実行結果 #条件を満たしているため、表示される
sakana123456

※[a-z\d] 
アルファベットa-zと\d→数字を表す
この記号は、英数字のいずれかの1つが含まれていることを示しています。
※ i 
iを記載することで、大・小文字の区別をなくすことができます。

まとめ

 今回はRubyの正規表現について説明しました。他言語の正規表現についても今後学習していければなと思います。

学習する上で参考にさせていただきました正規表現の表記一覧のサイトです。

<参考>
https://qiita.com/mkato1013/items/cb2bd0e1d387f643ee41


この記事が気に入ったらサポートをしてみませんか?