正規表現の一覧表

目次

01. 正規表現

正規表現とは

よく使うパターン

02. 正規表現のパターン

. (ドット) 任意の1文字を表す

| (パイプ) orを表す

^ (ハット) 先頭を表す

$ (ドル) 末尾を表す

[ ] (角括弧) かっこ内のどれか1文字にマッチするか

+ 直前の文字が1回以上繰り返す場合にマッチする

* (アスタリスク) 直前の文字が0回以上繰り返す場合にマッチする

.* .は任意の1文字で*は直前のパターンを0回以上繰り返し

.+ .は任意の1文字で+は直前のパターンを1回以上繰り返し

? (クエスチョンマーク) 直前の文字が0回または1回の場合にマッチする

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

{n} 直前の文字がn回続いている場合にマッチする

{n,} 直前の文字がn回以上続いている場合にマッチする

{n,m} 直前の文字がn回以上m回以下続いている場合にマッチする

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

+? 直前の文字が1回以上繰り返す場合にマッチする

?? 直前の文字が0回または1回の場合にマッチする

05. 定義済みの正規表現

\s 空白1文字か ※spaceのs(小文字)

\S 空白以外の1文字か ※spaceのS(大文字)

\d 数字1文字か ※digitのd(小文字)

\D 数字以外の1文字か digitのd(大文字)

\w アルファベット or 数値 or アンダースコアの1文字があるか wordのw(小文字)

\W アルファベット or 数値 or アンダースコア以外の1文字があるか wordのw(大文字)

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

正規表現とは

正規表現(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)が含まれているか
^(?!.*ABC).*$ 指定の文字列(ABC)が含まれていないときにtrueになります
^[0-9a-f]{64}$ ハッシュ値の64桁(16進数:0-9とa-f)
^\d{4}/\d\d/\d\d$ YYYY/MM/DD  2022/11/01はマッチします
^https?://localhost:.+/servlet-hello/ URL
先頭がhttpまたはhttpsで1文字以上の任意のポート番号

正規表現のパターン

. (ドット) 任意の1文字を表す

A.C

Aと任意の一文字とCか

マッチする(true) AEC
マッチしない(false) AEEC、AC

※ドット(.)を文字として扱う場合はドット(.)の前にエスケープ(\)が必要。拡張子の.txtで判別したい時等。

 

| (パイプ) orを表す

A|B

AまたはBか

マッチする(true) A、ADD、FB
マッチしない(false) C

 

^ (ハット) 先頭を表す

^A

先頭の文字はAか

マッチする(true) ABC
マッチしない(false) BAC

 

$ (ドル) 末尾を表す

A$

末尾の文字はAか

マッチする(true) CBA
マッチしない(false) ABC

 

[ ] (角括弧) かっこ内のどれか1文字にマッチするか

[ABC]

A,B,Cのどれか1文字にマッチするか

マッチする(true) B、BB、DDB
マッチしない(false) D

※[A-C]と同じ意味

[a-c2-5]

aからcまたは2から5のどれか1文字にマッチするか

マッチする(true) b、3
マッチしない(false) d

※-は範囲を表す

[abc][012]

a,b,cのどれか1文字と0,1,2のどれか1文字にマッチするか

マッチする(true) a1
マッチしない(false) 12

[^ABC]

A,B,C以外のどれか1文字にマッチするか

マッチする(true) F
マッチしない(false) C

※この場合の^は先頭文字を表す^とは別の意味になる

 

+ 直前の文字が1回以上繰り返す場合にマッチする

ABC+

ABと+の直前の文字Cが1回以上あるか

マッチする(true) ABC、ABCC、ABCD
マッチしない(false) AB、BBC

 

 * (アスタリスク) 直前の文字が0回以上繰り返す場合にマッチする

ABC*

ABと*の直前の文字Cが0回以上あるか

マッチする(true) ABC、ABCC、ABCD、AB
マッチしない(false) BBC

 

.* .は任意の1文字で*は直前のパターンを0回以上繰り返し

A.*E

A(任意の文字列)Eとなり2文字のAとEは確定で間に0文字からN文字入ります

マッチする(true) AE、AXXE
マッチしない(false) ABC

 

.+ .は任意の1文字で+は直前のパターンを1回以上繰り返し

A.+E

A(任意の文字列)Eとなり2文字のAとEは確定で間に1文字からN文字入ります

マッチする(true) ACE、AXXE
マッチしない(false) AE

 

? (クエスチョンマーク) 直前の文字が0回または1回の場合にマッチする

ABC?

ABと?の直前の文字Cが0または1個であるか

マッチする(true) ABC、ABCCC(ABCで一致)、ABCD(ABCで一致)、AB
マッチしない(false) BBC

 

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

{n} 直前の文字がn回続いている場合にマッチする

a{3}
マッチする(true) aaa、aaaaa(5文字:aaaで一致)
マッチしない(false) aa

※aの3桁とする場合は、^a{3}$とします。

 

{n,} 直前の文字がn回以上続いている場合にマッチする

a{3,}
マッチする(true) aaa、aaaaa(5文字:aaaaaで一致)
マッチしない(false) aa

a{3,}?でaaaaa(5文字)の場合は、aaaでマッチします。(最短一致)

 

{n,m} 直前の文字がn回以上m回以下続いている場合にマッチする

a{3,5}
マッチする(true) aaa、aaaaa(5文字:aaaaaで一致)、aaaaaa(6文字:aaaaaで一致)
マッチしない(false) aa

a{3,5}?でaaaaa(5文字)の場合は、aaaでマッチします。(最短一致)

 

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

+? 直前の文字が1回以上繰り返す場合にマッチする

C+?
マッチする(true) ABCCC(最初のCが一致:最短一致)
マッチしない(false) AB

※パターンがC+で、文字がABCCCの場合は、CCCが一致します。(最長一致)

 

?? 直前の文字が0回または1回の場合にマッチする

ABC??
マッチする(true) ABCCC(最初のABが一致:最短一致)、AB
マッチしない(false) A

※パターンがABC?で、文字がABCCCの場合は、ABCが一致します。(最長一致)

 

定義済みの正規表現

\s 空白1文字か ※spaceのs(小文字)

a\sc
マッチする(true) a c
マッチしない(false) a  c

 

\S 空白以外の1文字か ※spaceのS(大文字)

a\Sc
マッチする(true) abc
マッチしない(false) a c

 

\d 数字1文字か ※digitのd(小文字)

a\dc
マッチする(true) a5c
マッチしない(false)

abc

※[0-9]と同じ

 

\D 数字以外の1文字か digitのd(大文字)

a\Dc
マッチする(true) abc
マッチしない(false) a1c

※[^0-9]と同じ

 

\w アルファベット or 数値 or アンダースコアの1文字があるか wordのw(小文字)

a\wc
マッチする(true) a_c

マッチしない(false)

a c

※[a-zA-Z0-9_]と同じ。

 

\W アルファベット or 数値 or アンダースコア以外の1文字があるか wordのw(大文字)

a\Wc
マッチする(true) aあc

マッチしない(false)

a1c

※[^¥w]と同じ。¥wの否定。

 

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

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

エスケープをつけることによって、文字であることを表します。
エスケープがない場合は、正規表現の意味になります。

A\.C

AとドットとCか。エスケープがない場合.は任意の1文字の意味になる。

マッチする(true) A.C
マッチしない(false) AEC、AC

Windowsのフォルダの区切りは\円マークも同じなので注意が必要です。

関連の記事

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

△上に戻る