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