正規表現とは
正規表現とは、文字列のパターンを記述するための言語。文字列が指定したパターンを含んでいるかチェックできる。
Ruby3.0.0 リファレンスの引用文
正規表現(regular expression)は文字列のパターンを記述するための言語です。また、この言語で記述されたパターンも正規表現と呼びます。
正規表現を用いると、文字列が指定したパターンを含んでいるかどうかを判定し、また含んでいるならばそれが文字列中のどの場所であるかを知ることができます。
正規表現の例
/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
正規表現 |
意味 |
/ |
正規表現の開始を示す |
\A |
文字列の先頭 |
[\w+-.]+ |
英数字、アンダースコア(_)、プラス(+)、ハイフン(-)、ドット(.)のいずれかを少なくとも1文字以上繰り返す |
@ |
アットマーク |
[a-z\d-.]+ |
英小文字、数字、ハイフン、ドットのいずれかを少なくとも1文字以上繰り返す |
. |
ドット |
[a-z]+ |
英小文字を少なくとも1文字以上繰り返す |
\z |
文字列の末尾 |
/ |
正規表現の終わりを示す |
i |
大文字小文字を無視するオプション |
基本の文法
正規表現内で特別な働きをする文字列(メタ文字列)
それ以外の文字列そのおのにマッチするような文字列(リテラル)
文字列 |
名称 |
東京、大阪 |
リテラル |
() [] {} . ? + * | \ |
メタ文字列 |
{式}|式展開
文字クラス
文字 |
説明 |
[] |
角括弧に含まれるいずれか1文字にマッチ |
- |
範囲指定 |
^ |
角括弧に含まれる文字以外にマッチ(否定) |
&& |
共通 |
() |
列挙 |
|| |
いずれかの条件(OR条件) |
|直後の正規表現記号をエスケープ |
|
文字
文字|説明
--|--
\t|タブ(水平)
\v|タブ(垂直)
\r|改行
\n|改行
\f|改ページ
\b|バックスペース(文字クラス内で有効)
\a|ベル
\e|エスケープ文字
省略記法
文字 |
説明 |
\s |
空白 |
\d |
すべての数字(10進数字) |
\D |
すべての数字以外の文字(非10進数字) |
\s |
垂直タブ以外のすべての空白文字(空白文字) |
\S |
すべての非空白文字(非空白文字) |
\w |
アルファベット、アンダーバー、数字(単語構成文字) |
\W |
アルファベット、アンダーバー、数字以外の文字(非単語構成文字) |
繰り返し
文字|説明
--|--
.|任意の1文字にマッチ
+|直前の文字が1回以上繰り返す場合にマッチ
*|直前の文字が0回以上繰り返す場合にマッチ
?|直前の文字が0個か1個の場合にマッチ
+?|直前の文字が1回以上繰り返す場合にマッチ
*?|直前の文字が0回以上繰り返す場合にマッチ
??|直前の文字が0個か1個の場合にマッチ
{n}|直前の文字の桁数を指定
{n,}|直前の文字の最小桁数のみ指定
{n,m}|直前の文字の最小桁数と最大桁数を指定
{n,m}?|直前の文字の最小桁数と最大桁数を指定
キャプチャ
文字 |
説明 |
() |
文字を1つのグループにまとめる(キャプチャ) |
(?pat) |
名前つきキャプチャ |
定義済みの表現
文字|説明
--|--
^|直後の文字が行の先頭にある場合にマッチ
$|直前の文字が行の末尾にある場合にマッチ
\<|単語の先頭にマッチ
\>|単語の末尾にマッチ
\b|単語の先頭か末尾にマッチ
\B|単語の先頭か末尾以外にマッチ
\A|ファイルの先頭にマッチ
\z|ファイルの末尾にマッチ
\G|直前の一致文字列の末尾にマッチ
文字列の置き換え
文字 |説明
--|--
\0|一致した文字列全体に置換
\1 ~ \9|一致した文字列の1~9番目に対応する文字列に置換
\l |次の1文字を小文字に変換
\L...\E |挟まれた文字列を小文字に変換
\u |次の1文字を大文字に変換
\U...\E |挟まれた文字列を大文字に変換
修飾子一覧
文字|説明
--|--
/i|大文字と小文字を区別しない
/o|式の展開を一度だけ行う
/x|パターンの空白やコメントを無視
/m|対象の文字列を複数行として扱う
/g|繰り返しマッチを行う
/e|置換を行った結果を式として処理
参考元
Ruby 3.0.0 リファレンスマニュアル>正規表現