Regexpクラスとは?を調査します。
@shizumaさん ものすごく参考になりました。
https://qiita.com/shizuma/items/4279104026964f1efca6
/(スラッシュ)で囲むと正規表現オブジェクトを生成
メタ文字「繰り返し」を表現
| メタ文字列 | 意味 |
|---|---|
| * | 0回以上 |
| + | 1回以上 |
| ? | 0回か1回 |
| {n} | n回 |
| {n,} | n回以上 |
| {,n} | n回以下 |
| {n,m} | n回以上m回以下 |
メタ文字「ワイルドカード」
| . | 改行以外の任意の1文字の文字列を表す |
|---|
範囲を用いた文字クラス
| 表記 | 表す文字 | 範囲 |
|---|---|---|
| [a-z] | 小文字英字 | [abcdefghijklmnopqrstuvwxyz] |
| [A-Z] | 大文字英字 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ] |
| [0-9] | 1桁数字 | [0123456789] |
省略記法「文字クラス」
| メタ文字列 | 意味 |
|---|---|
| \w | 単語を構成する文字 [a-zA-Z0-9_] |
| \W | 単語を構成しない文字 [^a-zA-Z0-9_] |
| \s | 空白文字 [ \t\r\n\f] |
| \S | 空白でないような文字 [^ \t\r\n\f] |
| \d | 10進数の数字 [0-9] |
| \D | 10進数の数字でないような文字 [^0-9] |
| \h | 16進数の数字 [0-9a-fA-F] |
| \H | 16進数の数字でないような文字 [^0-9a-fA-F] |
(注1)否定文字クラス ^(ハット)・・・文字クラスの[の後に^を付けると先ほどとは逆にどの文字にもマッチしないというパターンを作成出来ます。
(注2)バックスラッシュ()と文字で改行などの特殊な文字を表現する
改行やタブなど特殊な文字にマッチさせるためにバックスラッシュ()と文字を組み合わせたメタ文字が利用できます。
| \f | 改ページ |
|---|---|
| \n | 改行 |
| \r | 復帰 |
| \t | タブ |
| \v | 垂直タブ |
文字列「文字列の先頭、文末等を表現」
| メタ文字列 | 意味 |
|---|---|
| ^ | 行頭 |
| $ | 行末 |
| \A | 文字列の先頭 |
| \z | 文字列の末尾 |
| \Z | 文字列の末尾(末尾が改行文字ならばその手前にマッチ) |
?=
?=の直後に設定した文字でチェックをかけて、設定した文字が続く文字列が存在するか確認します。
*?
「」は、直前の1文字が0回以上続くとマッチします。例えば、「camp」とした場合、「cam」「camp」「campp」「camppp」などがマッチします。この「*」の後に?をつけることで、チェックした文字列の中で、?の直後の文字が出てきた段階でその1文字のみ返します。
iオプション
iオプションを加えることで大文字・小文字を区別せずに検索します。
具体例
| 全て数値(全角) |
|---|
| /\A[0-9]+\z/ |
表示「\A」:先頭文字
表示「[0-9]」:数字で
表示「+」:1回以上繰り返して
表示「\z」:終わる