てもとツール
ガイド

正規表現の記号早見表|日本語の例文で当たる部分を確かめる

正規表現の記号は「どの文字か」「何回か」「どこか」「まとめる・選ぶ」の4つの役割に分かれます。日本語の例文1つに当てて、記号ごとに当たる部分を並べた早見表です。記号そのものを探すときの書き方と、全角に当たるかの違いもまとめました。

公開読了目安 約6分

この記事の要点

  • 記号は「どの文字か」「何回か」「どこか」「まとめる・選ぶ」の4つの役割に分けて覚える
  • 「.*」は最も長く取り、「.*?」は最も短く取る。【】で囲んだ語を1つずつ取るなら後者
  • 記号そのものを探すときは前に「\」を付ける。全角の()や.は普通の文字なので付けない
  • 「\d」はJavaScriptでは半角の数字だけ。全角の数字に当たるかは使う道具で違う
目次

正規表現の記号は、役割で4つに分けると覚えやすくなります。 「どの文字か」「何回か」「どこか」「まとめる・選ぶ」の4つです。

この記事では、同じ日本語の例文に記号を1つずつ当てて、当たる部分を表にしました。 例文は「会議は10月15日(木)14:00から、会議室Bで。」です。

表の結果は、すべての一致を探す設定(g フラグ)で数えています。 この設定はツールを開いた時点でオンです。 どの表も、正規表現テスターに例文を貼れば同じ結果を確かめられます。

記号は4つの役割に分けると引きやすい

正規表現は、ふつうの文字と記号の組み合わせです。 「会議」と書けば、その2文字の並びをそのまま探します。

記号は、そこに条件を足す道具です。 役割ごとに、よく使うものを並べました。

  • どの文字か: . \d \w \s [ ] [^ ]
  • 何回か: * + ? {n} {n,m}
  • どこか: ^ $
  • まとめる・選ぶ: ( ) |

困ったときは「いま足したい条件はどの役割か」から引くと、探す範囲が狭まります。

どの文字かを表す記号

1文字ぶんの「当てはまる文字の種類」を決める記号です。 例文は「会議は10月15日(木)14:00から、会議室Bで。」です。

パターン当たる部分
(.)(木)
\d+10、15、14、00
\w+10、15、14、00、B
[月日]月、日
[A-Z]B

. は改行以外の任意の1文字です(s フラグを付けると改行にも当たります)。 (.) なら、全角のかっこにはさまれた1文字を探します。

\d は半角の数字、\w は半角の英数字と下線です。 \w+ に「会議」が入らないのは、漢字が \w に含まれないためです。

[ ] は、中に並べた文字のどれか1つです。 先頭に ^ を置いた [^0-9] は「数字以外の1文字」になります。

何回くり返すかを表す記号

直前の1文字(またはかっこでまとめた部分)を、何回くり返すかを決めます。 例文は「会議は10月15日(木)14:00から、会議室Bで。」です。

パターン当たる部分
会議.?会議は、会議室
会議室?会議、会議室
\d{1,2}月10月
\d{2}:\d{2}14:00
  • *: 0回以上(なくてもよい)
  • +: 1回以上
  • ?: 0回か1回(あってもなくてもよい)
  • {n}: ちょうどn回
  • {n,m}: n回以上m回以下

会議室? の ? が効くのは、直前の「室」だけです。 「会議」と「会議室」の両方に当たるのはそのためです。

「.*」は最も長く取る

* や + は、当てられる範囲のうち最も長いところを取ります。 後ろに ? を足すと、反対に最も短いところで止まります。

例文は「【重要】会議の件【至急】」です。

パターン当たる部分
【.*】【重要】会議の件【至急】
【.*?】【重要】、【至急】

【.*】 は、最初の「【」から最後の「】」まで一気に取りました。 見出しの印を1つずつ外したいときは、【.*?】 のほうを使います。

どこにあるかを表す記号

文字の種類ではなく、位置を指定する記号です。 例文は「会議は10月15日(木)14:00から、会議室Bで。」です。

パターン当たる部分
^会議会議
。$。
\d+日15日

^会議 は文の頭の「会議」だけに当たり、後ろの「会議室」の「会議」には当たりません。 $ は文の終わりです。

複数行の文章で、行ごとの頭と終わりを見たいときは m フラグを付けます。 付けないと、^ と $ は文章全体の最初と最後だけを指します。

英単語の切れ目を表す \b は、日本語の文では思ったように働きません。 理由と日本語の文字の範囲の書き方は「正規表現で日本語マッチを失敗させないコツ」にまとめています。

まとめる記号と、選ぶ記号

| は「どちらか」、( ) は「ひとまとまり」を表します。 例文は「会議は10月15日(木)14:00から、会議室Bで。」です。

パターン当たる部分
\d+|B10、15、14、00、B
(月|日)月、日

かっこには、取り出した部分を置換で使い回す役目もあります。 (\d+)月(\d+)日 を $1/$2 に置き換えると、「10月15日」が「10/15」になります。

$1 は1つめのかっこ、$2 は2つめのかっこの中身です。 置き換えたあとの文は、ツールの置換プレビューで先に確かめられます。

記号そのものを探すときは「\」を付ける

. や ? を、記号ではなく文字として探したいこともあります。 そのときは前に \ を付けて、\. や \? と書きます。

[ ] の外で \ を付ける対象は、次の14個です。

  • . * + ? ^ $ |
  • ( ) [ ] { } \

[ ] の中では、ハイフンが範囲を表す記号に変わります。 ハイフンそのものを入れるときは、[0-9-] のように端に置くか、\- と書きます。

プログラムの中に /…/ の形でパターンを書くときは、区切りの / にも \ を付けます。 ツールの入力欄では区切りを書かないので、/ はそのままで探せます。

全角の「()」「.」「?」は、記号ではなく普通の文字です。 そのまま書けば探せるので、\ は付けません。

全角の数字や空白に当たるかは記号で違う

日本語の文章には、全角の数字や全角スペースが混ざります。 JavaScript(ブラウザ)の正規表現では、記号によって当たり方が分かれます。

  • \d: 半角の0〜9だけ。全角の「123」には当たらない
  • \s: 半角スペース・タブ・改行に加えて、全角スペースにも当たる
  • \w: 半角の英数字と下線だけ。全角の「a」や漢字には当たらない

全角の数字も探したいなら、[0-90-9] のように両方を並べます。 こう書けば、どの道具でも同じ意味になります。

同じ \d でも、道具が変わると意味が変わることがあります。 Python の re は、標準の設定では \d が全角の数字にも当たります(Python ドキュメント)。

ブラウザで試したパターンを別の道具へ持っていくときは、全角を含む文で1度確かめてから使います。 \d \w \s を避けて文字を並べて書くと、道具ごとの差が出にくくなります。

早見表を自分の文で確かめる順番

記号の意味が分かっても、実際の文で思いどおりに当たるとは限りません。 次の順で、少しずつ足していくと失敗が見つけやすくなります。

  1. 探したい部分を含む文を、実物から2〜3行貼る
  2. まず普通の文字だけで書き、1か所に当たるのを見る
  3. 変わる部分を、どの文字かの記号に置き換える
  4. 回数と位置の記号を足し、当たりすぎていないかを見る

正規表現テスターは、入力するたびに当たった部分を色で示し、件数も出します。 当たりすぎたら、最後に足した記号を外して1つ前に戻れます。

関連記事

参考・出典

本記事は上記の公的機関・公式情報源を参考にしています。最新の情報は各リンク先をご確認ください。

あわせて読みたい

同じテーマ・関連ツールの記事です。