こんにちは、moegi (@moegi_web) です。
今、学んでいるRubyにおける正規表現の基本的な書き方についてまとめました。
正規表現とは
正規表現(正規表現パターン)は、テキストデータ内で特定のパターンを検索、マッチング、置換するためのミニ言語です。
正規表現パターンは、検索や置換のための特定のルールを指定し、文字列内での特定の文字の出現回数、特定の文字の組み合わせ、文字の範囲などを指定することができます。
文字クラス
|
意味 |
\d |
1個の半角数字(0123456789) |
[0-9] |
1個の半角数字(0123456789) |
\w |
英単語を構成する文字 |
\t |
タブ文字 |
\s |
半角スペースやタブ文字、改行文字など、目に見えない「空白文字全般」を表す |
| |
または(OR条件を表す) |
? |
直前の文字が1個、またはゼロ |
$ |
行末 |
ABC|DEF |
文字列ABC、または文字列DEF |
[a-zA-Z0-9_] |
半角英数字とアンダースコア1文字 |
-09 |
0または9またはハイフン |
[AB] |
AまたはBのいずれか1文字([BA]と書いても同じ) |
[ABC] |
AまたはBまたはCのいずれか1文字 |
[-(] |
ハイフンまたはカッコ(開き) |
[-)] |
ハイフンまたはカッコ(閉じ) |
[a-z] |
aまたはbまたはcまたは・・・yまたはz |
[a-zA-Z0-9] |
aまたはbまたは・・・z、AまたはBまたは・・・Z、0または1または・・・9(半角英数字1文字) |
[a-zA-Z0-9] |
aまたはbまたは・・・z、AまたはBまたは・・・Z、0または1または・・・9(半角英数字1文字) |
^[ \t]+ |
行頭からスペースやタブ文字が1文字以上続く |
:[ \t]* |
コロンの後ろにスペースまたはタブ文字が0文字以上 |
(@\w+) |
“@” で始まり、任意のアルファベットが続く文字列 |
ハイフン
[ ] の中では使い方によってハイフンの意味が変わる
|
意味 |
[a-z] |
文字の範囲 |
[-az]または[az-] |
ハイフン1文字 |
[-az]または[az-] |
ハイフン1文字 |
[-az]または[az-] |
aまたはzまたはハイフンのいずれか1文字 |
[a-z0-9_] |
英数字またはアンダースコア |
キャレット
[ ] の最初に ^ が入ると否定の意味に変わる
|
意味 |
[^A] |
A以外の任意の文字 |
[^AB] |
AでもなくBでもない任意の1文字 |
[AB^] |
AまたはBまたは^のいずれか1文字 |
[^<] |
< 以外の任意の文字 |
^ |
「行頭」を表す |
^. |
行頭にくる任意の1文字 |
^ + |
行頭からスペースが1文字以上続く |
^ +$ |
行頭から行末までスペースが1文字以上続く |
^.+ |
行頭からの何らかの文字が1文字以上続く |
^(.*) – |
行頭からハイフンまでの任意の文字列 |
量指定子
|
意味 |
{n,m} |
直前の文字が n 個以上、m 個以下 |
{n} |
ちょうど n 文字 |
? |
~が1文字、または無し |
[ ・] |
任意の1文字(半角スペースと全角スペースと中黒の三文字) |
. |
任意の1文字 |
+ |
直前の文字が 1文字以上 |
+ |
スペースが1文字以上続く |
.+ |
任意の文字が1文字以上 |
( ) |
()内の部分がキャプチャ(捕捉)され、連番が付けられる |
(?: ) |
キャプチャ対象から除外する |
* |
直前の文字が0文字以上 |
.* |
任意の文字が1文字以上 |
>(.*)< |
> で始まり、任意の文字が0個以上連続し(.*)、 最後に見つかった < で終わる |
>(.*?)< |
> で始まり、任意の文字が0個以上連続し(.*)、 最初に見つかった < で終わる |
\ |
スラッシュ(/)をエスケープするためのエスケープ文字 |
スペースと後読みや先読み
|
意味 |
\b |
単語の境界(単語の直前や直後という 位置 にマッチ) |
|
肯定の後読み |
肯定の先読み |
書き方 |
(?<=abc) |
(?=abc) |
意味 |
文字列の「直後の位置」 にマッチ |
文字列の「直前の位置」にマッチ |
|
否定の後読み |
否定の先読み |
書き方 |
(?
| (?!abc) |
意味 |
文字列以外の「直後の位置」にマッチ |
文字列以外の「直前の位置」にマッチ |
時間
|
意味 |
(\d+[smh]) |
数字 + 数秒、数分、数時間 |
(\w{3} \d+) |
アルファベット3文字 + 数字 |
まとめ
以上、Rubyにおける正規表現の基本的な書き方についてまとめでした!
正規表現はマスターできたらとても便利なのでしっかり覚えていきたいです。
コメント