正規表現って何?という方のためにまとめてみました。
「http(s)?://([\w]+\.)+[\w]+(/[\w./?%$=-]*)?」なんだれこっていう人!
これを見ればわかるようになります。
目次
1、rubyで利用できる正規表現パターン
2、正規表現を使った具体例
rubyで利用できる正規表現パターン
基本
abc
・abcという文字
[abc]
・a,b,cのどれか1文字
[^abc]
・a,b,c以外のどれかの1文字
[a-z]
・a~zまでの1文字
[a | b | c]
・a,b,cのどれか
量指定
a*
・0文字以上のa
(例 "so*n"のとき、"sn","son","soon","sooon"とかにマッチする)
a?
・0または1文字のa
(例 "so?n"のとき、"sn","son"とかにマッチする)
a+
・1文字以上のa
(例 "so+n"のとき、"son","soon","sooon"とかにマッチする)
a{n}
・aとn回一致
(例 "so{2}n"のとき、"soon"にマッチ)
a{n,}
・aとn回以上一致
(例 "so{2,}n"のとき、"soon","sooon"とかにマッチする)
a{,m}
・aとm回以下一致
(例 "so{,2}n"のとき、"soon","son","sn"とかにマッチする)
a{m,n}
・aとm~n回一致
(例 "so{2,3}n"のとき、"soon","sooon"にマッチする)
位置指定
^
・行の先頭に一致
$
・行の末尾に一致
\A
・文字列の先頭に一致
\z
・文字列の末尾に一致
\Z
・文字列の末尾に一致(最後の文字が改行の場合、その手前)
文字セット
.
・任意の1文字
\w
・文字、数字、アンダースコアに一致([a-zA-Z0-9_]と同じ)
\W
・文字以外と一致([^\w]と同じ)
\d
・[0-9]と同じ
\D
・[0-9]以外の数値と一致 ([^\d]と同じ)
\h
・[0-9a-fA-F]と同じ
\H
・\h以外の数値と一致 ([^\h]と同じ)
\r
・復帰(キャリッジリターン)に一致
\t
・タブ文字に一致
\s
・空白文字に一致([\t\r\n\f\v]と同じ)
\S
・空白以外の文字に一致([^\s]と同じ)
正規表現を使った具体例(よく使うパターン)
(例)『URL パターン』
http(s)?://([\w]+\.)+[\w]+(/[\w./?%$=-]*)?これを読み解いてみましょう。
まず、「http(s)?://」に含まれてる「(s)?」は「s」が0〜1回含まれることを意味しています。
ようするに「http://」と「https://」にマッチするということです。
次に、「([\w]+\.)+[\w]+」は英数字、アンダースコア、ハイフンで構成される文字列になっており、かつピリオド(.)を含むことを意味しています。
最後に「(/[\w./?%$=-]*)?」は後列の文字列が、英数字、アンダースコア、その他の記号(-,?,%,$)などを含む文字列からなっていることを意味しています。
(例)『電話番号 パターン』
\d{2,4}-\d{2,4}-\d{4}(マッチするパターン 例 080-1234-5678)
まず、「\d{2,4}」は[0-9]に含まれる数字が2〜4回含まれることを意味しています。
次にハイフンが入り同じく「\d{2,4}」が含まれる文字列がマッチされます。
最後に[0-9]に含まれる数字が4回含まれることを意味しています。
(例)『アドレス パターン』
[a-z\d+\-.]+@[a-z\d\-.]+[a-z\d\-.]+\.[a-z]+(マッチするパターン 例 sumple123@example.com)
まず、「[a-z\d+\-.]+」の[ ]の中が英数字とピリオド(.)、ハイフンが含まれています。
それが「+」1文字以上を意味しています。
次に、@が入りその後同じく「[a-z\d\-.]+」が英数字とピリオド(.)、ハイフン一文字以上を意味し最後に「\.[a-z]+」ピリオド(.)のあと英語文字の[a-z]が1文字以上含まれることを意味しています。
webアプリを作成する際、フォームやお問合せタグを作成する際、validateをするためにもこういった正規表現を使うのでぜひ参考にしていただければと思います。
また、ruby で正規表現の練習をするのに便利な「Rubular」というサービスがあります。
ブラウザ上で動作する正規表現エディターとなっているので試してみるのも良いと思います。