📔
正規表現のメモ
はじめに
正規表現は、ログやConfigを見るときになど使用しますが、
正直小学生を相手に説明できるかといわれると出来ません。(キリッ)
なので、基本の部分ですが簡単に記事にしてみました。
またチートシートとして利用いただければと思います。(随時更新予定です。)
正規表現
正規表現(せいきひょうげん、英: regular expression)
文字列の集合を一つの文字列で表現する方法の一つである。正則表現(せいそくひょうげん)とも呼ばれる
「Flower」と「Float」があった場合、
「Flo(wer|oat)」と正規表現で表すことができるようになります。
メタ文字
メタキャラクタ文字 (めたきゃらくたもじ、英: metacharacter)
コンピュータプログラムに与える文字列データの中で、特別な意味や役割を持つ文字のこと
基本的なメタ文字などを一覧化してみました。
基本メタ文字
文字 | 意味 | 使用例 | 結果 | 説明 |
---|---|---|---|---|
. | 任意の1文字に一致させる | A. | AB,AC,A1,Aa | Aの次に何らかの1文字がある場合に一致させる |
* | 直前の文字が0回以上に一致させる | A* | ,A,AA,AAA,... | 0個以上連続したAに一致させる |
⁺ | 直前の文字が1回以上に一致させる | A⁺ | A,AA,AAA,... | 1個以上連続したAに一致させる |
? | 直前の文字が0回以上または1回に一致させる | AB?C | ABC,AC | AとCの間にBがない、もしくは、Bがある場合に一致させる |
{n} | 直前の文字がちょうどn回に一致させる | A{5} | AAAAA | 5個のAに一致させる |
{n,m} | 直前の文字がn回以上、m回以下に一致させる | A{2,4} | AA,AAA,AAAA | 2個以上、4個以下のAに一致させる |
[...] | []内の文字に一致させる | [abd] [A-Z] [0~9] |
a,b,d A~Zの英字大文字 0~9の数値文字 |
|
\w | 英数字かアンダーバーを表す(a~z,A~Z,0~9,_) | |||
\d | 数値文字を表す(0~9) | |||
| | OR条件の使用方法 | AA|BB|CC | AA,BB,CC | AAまたはBBまたはCCに一致させる |
() | グループ化 | A(a|b|c) | Aa,Ab,Ac | AaまたはAbまたはAcに一致させる |
\s | 空白、タブを一致させる |
位置を表すメタ文字
文字 | 意味 | 使用例 | 結果 | 説明 |
---|---|---|---|---|
^ | 行の先頭に一致させる | ^g | 行頭がgから始まるすべての行に一致させる | |
$ | 行の末尾に一致させる | $e | google Youtube apple |
行末がeで終わるすべての行に一致させる |
\b | 単語の先頭に一致させる | \bg | 単語の先頭がgから始まるすべての単語を一致させる | |
\b | 単語の末尾に一致させる | e\b | google Youtube |
単語の行末がeで終わるすべての単語を一致させる |
\B | 単語の先頭に以外に一致させる | \Bg | Youtube apple |
単語の先頭がgから始まらないすべての単語に一致させる |
\B | 単語の末尾以外に一致させる | e\B | 単語の末尾がeで終わらないすべての単語に一致させる | |
^...$ | 指定した単語のみの行に一致させる | ^google$ | 行全体がgoogleとなっている行に一致させる | |
^$ | 改行(行の先頭と末尾)に一致させる | ^$ | ||
^.*$ | 行全体を一致させる |
エスケープシーケンス
先頭にバックスラッシュが指定されて、アルファベットや数字で構成される文字の組み合わせのこと。
文字 | 意味 |
---|---|
\cX | Ctrl +X (Xは任意の文字) |
\n | 改行コード |
\r | 改行コード |
\f | 改ページ |
\t | タブ |
\v | 垂直タブ |
\S | 空白文字以外のすべての文字 |
\d | 数値文字 [0-9]と同義 |
\D | 数値文字以外 [^0-9]と同義 |
\l | すべての半角英小文字 |
\L | すべての半角英小文字以外の文字 |
\u | すべての半角英大文字 |
\U | 全ての半角英大文字以外 |
正規表現を使った置換方法
VB.Netでの使用する場合には、下記のようにしてあげれば置換が可能になります。
regexp.Replace("置換前","置換後")
使用頻度の高い正規表現
構文 | |
---|---|
ドメイン名 | ^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9].[a-zA-Z]{2,}$ |
URL | ^https?://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$ |
携帯電話番号 | ^0[789]0-\d{4}-\d{4}$ |
日付 (YYYY-MM-DD形式) | ^\d{4}-\d\d-\d\d$ |
郵便番号 | ^\d{3}-\d{4}$ |
空白行 | \n\s*\r |
英数字 | ^[A-Za-z0-9]+$ |
まとめ
正しく理解して、いちいちググらずに正しく正規表現を活用していきたいですね。
理解したこと、使用頻度の高いものに関しては追記していければと思います。
Discussion