目次
| サンプル | 正規表現とは |
| よく使うパターン | |
| 正規表現のパターン | |
| 正規表現のパターン(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のフォルダの区切りは\円マークも同じなので注意が必要です。 |
関連の記事
