1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

正規表現入門

Posted at

正規表現とは

文字列のパターンを表現するための特別な文字列

使用例

文字列の検索・抽出、Webスクレイピング

  • ログファイルの「エラー行」
  • メールアドレス
  • 電話番号
  • 日付
  • 郵便番号
  • URL
  • HTMLタグなど

置換・修正

  • 文章中の機密情報(例:クレジットカード番号)をマスキング
  • 改行コードの統一(\r\n\n)
  • タグの除去(例:HTMLタグを削除)

入力時のバリデーション(検証)

  • メールアドレスの形式確認
  • パスワードの条件確認(英数字混在、8文字以上など)
  • 数値や日付の書式確認

よく使う正規表現の基本記号

文字の意味を指定する記号(メタ文字)

記号 意味
. 任意の1文字 a.cabc, acc などにマッチ
^ 行頭にマッチ ^HelloHelloで始まる行
$ 行末にマッチ world$worldで終わる行
* 直前の文字が0回以上繰り返し a*"", a, aaa
+ 直前の文字が1回以上繰り返し a+a, aa, aaa
? 直前の文字が0回または1回 a?"", a

グループ・繰り返し・範囲

記号 意味
() グループ化 (ab)+ab, abab, ababab
[] 指定した文字のいずれか [a-z]azのいずれか
[^] 含まない文字 [^abc]a, b, c 以外
{n} ちょうどn回の繰り返し a{3}aaa
{n,} n回以上 a{2,}aa, aaa, ...
{n, m} n~m回 a{2,4}aa, aaa, aaaa

特殊文字クラス(便利な略記法)

記号 意味
\d 数字([0~9]) \d+123 などの数字列
\D 非数字 [^\d]と同じ
\w 単語構成文字(英数字 + アンダースコア) [a-zA-Z0-9_]
\W 非単語構成文字 [^\w]
\s 空白(スペース・タブ・改行など) \s+ → 空白部分にマッチ
\S 非空白 [^\s]

実例(よく使うパターン)

  • メールアドレス
    • ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
  • 郵便番号
    • ^[0-9]{3}-[0-9]{4}$
  • 日付(yyyy/mm/dd)
    • ^[0-9]{4}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$
  • 電話番号
    • ^0[5789]0-[0-9]{4}-[0-9]{4}$

おすすめチェッカーツール

  • 正規表現チェッカー WWW-Creators!
    • JavaScript対応
  • Rubular
    • Ruby対応
  • Debuggex
    • PHP, Javascirpt, Python対応

まとめ

正規表現とは、文字列のパターンを記述するための表現方法で、検索・抽出・置換・バリデーションなど幅広く活用されます。基本記号や便利な略記法を使うことで、複雑な文字列処理を簡潔に記述できます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?