正規表現のメタ文字一覧とその使い方
作成日:2009.04.10
正規表現を使う際に知っておくべき基本的なメタ文字をまとめました。各メタ文字がどのように機能し、どんな場面で活用できるかを簡潔に解説します。
error この記事は最終更新日から17年以上が経過しています。
正規表現のメタ文字とかのまとめです。備忘録として。
- . (ドット/ピリオド)
- 任意の一文字。何でもマッチする。
- X* (アスタリスク)
- 「X*」で、0個以上連続した X の意味。
- X+ (プラス記号)
- 「X+」で、1個以上連続した X の意味。
- X? (クエスチョンマーク)
- 「X?」で、0~1個の X の意味。
- ^X (これなんて読むの?)
- 「^X」で、X から始まる文字列ならマッチする。
- X$ (ドル記号)
- 「X$」で、X で終わる文字列ならマッチする。
- [XYZ]
- 「[XYZ]」で、X Y Z のどれか一文字にマッチ。
「[A-Z]」で、A~Z のどれか一文字にマッチ。 - [^XYZ]
- 「[^XYZ]」で、X Y Z 以外の一文字にマッチ。
「[^A-Z]」で、A~Z以外の一文字にマッチ。 - ABC|XYZ
- 「ABC|XYZ」で、ABC か XYZ という文字列にマッチ。
- (ABC)
- 「(ABC)」で、一文字単位でなく ABC という文字列を扱える。
EFG(ABC|XYZ)HIK とか (ABC)+EFG みたいな感じで使う。
後で参照可能。 - \1 ~ \9
- 上記の () で囲んだ部分にマッチした文字列を参照。
「^(ABC|XYZ)(DEF|UVW)\1\2$」 みたいな感じでやると \1 にはマッチした ABC または XYZ が、\2 にはマッチした DEF または UVW が入る。 - X{3}
- 「X{3}」で 3回連続した X にマッチ。
- X{5,}
- 「X{5,}」で 5回以上連続した X にマッチ。
- X{3,5}
- 「X{3,5}」で 3~5回連続した X にマッチ。
以下はメタ文字とはまた別。
- \d
- 数値文字。[0-9] と同義。
- \D
- 数値文字以外。[^0-9] と同義。
- \w
- 英数字と「_」(アンダーバー)。 [a-zA-Z0-9_] と同義。
- \W
- 英数字と「_」(アンダーバー)以外。 [^a-zA-Z0-9_] と同義。
奈良市を拠点に、27年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
MySQLの正規表現でタイムアウト(Error Code 3699)が発生する原因と対処法
2026.10.17
MySQLの正規表現で発生する「Error Code 3699」の原因と対処法を解説します。SQLやパターンの見直し、一時テーブルを使った検索と整形の分離、最終手段としてのregexp_time_limitの変更と注意点を紹介します。
MySQLで文字列を整形・抽出する:TRIM・SUBSTRING_INDEX・REGEXP_SUBSTRの使い方
2026.10.11
MySQLで取得する文字列から不要な空白を除いたり、区切り文字や正規表現を使って必要な部分を取り出したりする方法を紹介します。TRIM・SUBSTRING_INDEX・REGEXP_SUBSTRの基本構文と使い分けを、具体的なSQL例で解説。NULLや空文字、想定した形式に合わない値を扱う際の注意点も整理します。
PHPの正規表現で日本語・改行を扱う:u・m・s修飾子の違い
2026.09.29
PHPの正規表現で日本語や複数行テキストを扱う際の、u・m・s修飾子の違いを解説します。Unicode文字クラスと全角数字、CRLFの行末処理、\A・\zの使い方、Unicode正規化との違いを、PHP 8.3.15・PCRE2 10.42で確認したコード例とともに紹介します。
PHPの正規表現を使い分ける:preg_match・preg_match_all・preg_replaceと入力検証
2026.08.28
PHPのpreg_match、preg_match_all、preg_replaceを使い、一致した値の取り出し、複数箇所の抽出、文字列置換を行う方法を解説します。u修飾子やmb_check_encodingにも触れ、メールアドレスの形式検証では、正規表現やfilter_var()だけで到達性・所有確認まではできないことを説明します。