正規表現の基本的な使い方

正規表現の基本的な使い方

プログラミングをしていると正規表現をすることがたまにあります。今まではコピペで済ませていましたがちゃんと勉強したいという人のためにまとめてみました。

この記事を読むことで正規表現の使い方がわかります。

正規表現の基本的な使い方

正規表現とは文字や数字や記号の並びについて型を決め、その型通りに記入されているかやその型でランダムな文字列を作成する方法です。

文字の指定

.は改行を除く任意の1文字のことです。
例えば .at と書かれていた場合はcat,hat,satとなっているかを確認できます。
何か指定する表現と使われる時もあります。
例えば a(?=.) とすると任意の文字に続くaということになります

他にも下記のような文字の指定の仕方があります。
\d 0-9
\w a-z, A-Z, 0-9, _
\s スペース、タブ、改行など

文字の繰り返し

任意の文字を使って文字列を作る場合は下記のような記号を使うと便利です。
{n} //n個続けることを意味します。
{min, max} min以上、max以下
{min, } min以上

例えばこれらを使って123-4567-89を表現する場合
\d{3}-\d{4}-\d{2}
となります。
ただ、このままでは123-4567-89と123456789の両方にマッチさせることができません。
そこで、下記のような記号を使います。
?  //{0,1}の意味(0か1回繰り返す)
+  //{1,} (1回以上繰り返す)
*  //{0,} (0回以上繰り返す)
これらを使えば123-4567-89と123456789の両方にマッチさせる方法として
\d{2}-?\d{4}-?\d{2}
と書くことができます。
ちなみに、{}ではなく()は正規表現をまとめる時に使います

アンカー

ただ単に\dや\wとしても何処の数字、文字か分からないという問題があります。
そのため、アンカーというものがあります。
^  //行の先頭
$  //行の末尾
\b  //単語の境界
^\dとすることで最初の文字が0-9という意味になります。

文字クラスやメタ文字

他にも様々な指定方法があります。
文字クラス
[abc] //a,b,c のうちのどれか1文字
文字クラス内のメタ文字
cat, hat, eat がある時
[^c]at //cat以外が選択されます
A12, F34, B23 がある時
[A-F]\d+ //全て選択できます
[-] //範囲を意味します

123^4567
123-4567
123.4567
上記全てを取得したい場合
^\d{3}[^-.]\d{4} 
としたいとこですが^や-がメタ文字として認識されているためエスケープが必要です。
^\d{3}[\^\-.]\d{4}

タブや改行

他にもタブや改行を指定する方法もあります。
\t  \\タブ
\r\n  \\改行(windows)
\r  \\macOS
\n  \\Unix, v10以降macOS
\r\n|\n|\r  \\改行

よく使う正規表現

正規表現の基本はわかりましたが、いちいち自分で考えいるのは面倒です。そのため、よく使うであろう正規表現についてまとめておきます。

メールアドレス
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

パスワード(大文字小文字英数字組み合わせ、特殊文字禁止、長さは8-10)
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

携帯電話
^0[789]0-\d{4}-\d{4}$

ドメイン名
^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z-]{2,}$

URL
^https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

日付
^\d{4}-\d\d-\d\d$

郵便番号
^\d{3}-\d{4}$

まとめ

今回は正規表現についてまとめました。

自分で新しく作るとなると難しいので今回紹介したものをコピペすると早く作業が進みます。

お役に立てれば幸いです。

関連記事