#正規表現とは
正規表現とは、文字列のパターンを記述するための言語。文字列が指定したパターンを含んでいるかチェックできる。
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) | 名前つきキャプチャ |