正規表現の一覧表

目次

サンプル 正規表現とは
よく使うパターン
正規表現のパターン
正規表現のパターン(n回続く{})
正規表現のパターン(最短一致)
定義済みの正規表現
エスケープシーケンス(正規表現の記号を文字として表示)

正規表現とは

正規表現(Regular Expression)は、文字列の中から特定の文字列やパターンを検索したり、置換したりする時に利用します。様々なプログラム言語で利用されており、テキスト処理において便利な機能です。

正規表現は、以下のような場面で利用されます。

・テキストデータから特定の文字列やパターンを検索する
・テキストデータの入力チェックを行う
・ログファイルから必要な情報を抽出する
・ファイル名のパターンを指定して複数のファイルを一括で処理する

 

よく使うパターン

^(ハット)は先頭の文字で、$(ドル)は最後尾の文字を表します。

パターン 意味
^[0-9]+$ 数値のみの場合マッチします。
^\d{3}-\d{4}$ 郵便番号
^0\d{2}-\d{4}-\d{4}$ 電話番号(先頭0+数値2桁-数値4桁-数値4桁)
[0-9]{5} 数値5桁
^.*ABC.* 文字列に指定の文字(ABC)が含まれているか
^\d{4}/\d\d/\d\d$ YYYY/MM/DD  2022/11/01はマッチします。
^https?://localhost:.+/servlet-hello/ URL
先頭がhttpまたはhttpsで1文字以上の任意のポート番号

正規表現のパターン

パターン 使用例 意味
. A.C 任意の1文字を表します。ピリオド、ドットを使用。
→Aと任意の一文字とCか。
AECはマッチする。AEECはマッチしない。ACはマッチしない。
※拡張子.txtを対象とした場合、.を文字として扱う場合は.の前にエスケープ(\)が必要です。
| A|B
(A|B)
orを表します。パイプを使用。
→AまたはBである場合にマッチします。
^ ^A 先頭の文字がAの場合マッチします。ハットを使用。
$ A$ 最後尾の文字がAの場合マッチします。ドルを使用。
[ ] [ABC] かっこ内のどれか1文字にマッチするか。
角括弧(かくかっこ)、大括弧を使用。

A,B,Cのどれか1文字にマッチするか。
[A-C]と同じ意味。-は範囲を表す。
→Bはマッチする。Dはマッチしない。
[a-c2-5] aからcまたは2から5のどれか1文字にマッチするか。
-は範囲を表す。
→bはマッチする。dはマッチしない。3はマッチする。
[abc][012] a,b,cのどれか1文字と0,1,2のどれか1文字にマッチするか。
→a1はマッチする。12はマッチしない。
[^ABC] A,B,C以外のどれか1文字にマッチするか。
→Fはマッチする。Cはマッチしない。
※この場合の^は先頭文字を表す^とは別の意味になる。
+ ABC+ 直前の文字が1回以上繰り返す場合にマッチする。
ABと+の直前の文字Cが1回以上あるか。
→ABC、ABCC、ABCDはマッチする。AB、BBCはマッチしない。
* ABC* 直前の文字が0回以上繰り返す場合にマッチする。
アスタリスクを使用。
ABと*の直前の文字Cが0回以上あるか。
→ABC、ABCC、ABCD、ABはマッチする。
BBCはマッチしない。
.* A.*E .は任意の1文字で*は直前のパターンを0回以上繰り返し。
→A(任意の文字列)Eとなり2文字のAとEは確定で間に0文字からN文字入ります。
.+ A.+E .は任意の1文字で+は直前のパターンを1回以上繰り返し。
→A(任意の文字列)Eとなり2文字のAとEは確定で間に1文字からN文字入ります。
? ABC? 直前の文字が0回または1回の場合にマッチする。
クエスチョンマーク、はてな
を使用。
ABと?の直前の文字Cが0または1個であるか。
→ABC、ABCCC(※1)、ABCD(※1)、ABはマッチする。
BBCはマッチしない。
※1 ABCでマッチする。

正規表現のパターン(n回続く{})

パターン 使用例 意味
{n} a{3} 直前の文字がn回続いている。
aaa、aaaaa(※1)の場合マッチします。aaの場合マッチしません。
※1 aaaでマッチします。
a{3}?でaaaaaの場合は、aaaでマッチします。
aの3桁とする場合は、^a{3}$とします。
{n,} a{3,} 直前の文字がn回以上続いている。
aaa、aaaaa(※1)の場合マッチします。aaの場合マッチしません。
※1 aaaaaでマッチします。
a{3,}?でaaaaaの場合は、aaaでマッチします。(最短一致)
{n,m} a{3,5} 直前の文字がn回以上m回以下続いている。
aaa、aaaaa(※1)、aaaaaa(※1)の場合マッチします。
aaの場合マッチしません。
※1 aaaaaでマッチします。
a{3,5}?でaaaaaaの場合は、aaaでマッチします。(最短一致)

正規表現のパターン(最短一致)

パターン 使用例 意味
+? C+? 直前の文字が1回以上繰り返す場合にマッチする。(最短一致)
文字がABCCCでC+?の場合、最初のCが一致します。(最短一致)
C+の場合は、CCCが一致します。(最長一致)
*? <.*?> 直前の文字が0回以上繰り返す場合にマッチする。最短一致。
文字が<A><B>で<.*?>の場合、<A>が一致します。(最短一致)
<.*>の場合は、<A><B>が一致します。(最長一致)
?? ABC?? 直前の文字が0回または1回の場合にマッチする。最短一致。
文字がABCCCでABC??の場合、最初のABが一致します。(最短一致)
文字がABCCCでABC?の場合は、ABCが一致します。(最長一致)

定義済みの正規表現

パターン 使用例 意味
\s a\sc 比較する文字に、空白1文字がある。
→a cの場合マッチします。
\S a\Sc 比較する文字に、空白以外の1文字がある。
→abcの場合マッチします。
\d a\dc 比較する文字に、数字1文字がある。[0-9]と同じ。
→a5cの場合マッチします。
\D a\Dc 比較する文字に、数字以外の1文字がある。 [^0-9]と同じ。
→abcの場合マッチします。
\w a\wc 比較する文字にアルファベットまたは数値またはアンダースコアの1文字がある。[a-zA-Z0-9_]と同じ。
→a_cの場合マッチします。
\W a\Wc ¥wの否定。比較する文字にアルファベットまたは数値またはアンダースコア以外の1文字がある。[^¥w]と同じ。
→aあcの場合マッチします。

\の文字コードは、0x5cです。

エスケープシーケンス(正規表現の記号を文字として表示)

エスケープしたい文字の前に\(文字コードは0x5c)を付けます。

パターン 使用例 意味
\ A\.C 任意の1文字ではなく、文字としてのドットであることを表す。
→AとドットとCか。
A.Cはマッチする。AECはマッチしない。ACはマッチしない。
※Windowsのフォルダの区切りは\円マークも同じなので注意が必要です。

関連の記事

JavaScript test 正規表現で真偽値を返す

△上に戻る