Rubyにおける正規表現の基礎

Ruby

こんにちは、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における正規表現の基本的な書き方についてまとめでした!
正規表現はマスターできたらとても便利なのでしっかり覚えていきたいです。

コメント

タイトルとURLをコピーしました