正規表現
プロを目指す人のためのRuby入門を読みながら正規表現について学習しました💡
ここには本を読むにあたり参考になったサイトやメモを記録しておきます!
1.メモ
/ /
で囲まれた範囲が正規表現(Regexpクラスのインスタンス)になる。/ /g
というふうに最後にg
(グローバルオプション)がついたら、一致する文字列をすべて抽出する。つかない場合は最初の1件見つかったら検索終了です🙂以下の表は、参考サイトに出てきた正規表現の一例です!
正規表現 意味 \d 1個の半角数字(0~9) [AB] AまたはBのいずれか1文字
※[ ]内は文字数制限がなく、[ABC]ならAまたはBまたはCのいずれか1文字という意味になる。
[ ] の最初に ^ が入ると否定の意味になる。? 直前の文字が1文字、または無し(量指定子) . 任意の1文字 + 直前の文字が1文字以上(量指定子) * 直前の文字が0文字以上(量指定子) \w 英単語を構成する文字
[a-zA-Z0-9_](半角英数字とアンダースコア1文字)^ 行頭(アンカー) $ 末尾(アンカー) \t タブ文字 \s 半角スペース、タブ文字、改行文字など目に見えない空白文字全般 | OR条件
※ABC|DEFで「文字列ABC、または文字列DEF」という意味。
(ABC|DEF) のように ( ) と一緒に使われることが多い。\b 単語の境界(アンカー)
※\bear\b で、ear という英単語だけを検索できる文字の個数を限定するときは量指定子と呼ばれるメタ文字を使う。
- {n,m} :直前の文字が n 個以上、m 個以下
- {n} :ちょうど n 文字
例えば国内の電話番号なら、
XX-XXXX-XXXX
,XXX-XXX_XXXX
,XXXX-XX-XXXX
の3パターンと、携帯電話のXXX-XXXX-XXXX
のパターンがあります。
文字にすると、半角数字が2個~4個、ハイフン、半角数字が2個~4個、ハイフン、半角数字が4個になります。
これを正規表現にすると、\d{2,4}-\d{2,4}-\d{4}
になります🎉
2.参考サイト
初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita
初心者歓迎!手と目で覚える正規表現入門・その2「微妙な違いを許容しつつ置換しよう」 - Qiita
初心者歓迎!手と目で覚える正規表現入門・その3「空白文字を自由自在に操ろう」 - Qiita
初心者歓迎!手と目で覚える正規表現入門・その4(最終回)「中級者テクニックをマスターしよう」 - Qiita
正規表現に該当する箇所を目で確認できるサイト