正規表現 これだけは知っておこう
検索サンプル一覧 置換サンプル一覧
検索用メタ文字 置換用メタ文字
テキストエディタ

正規表現について~正規表現 これだけは知っておこう~

正規表現とは

「正規表現」とは、「検索」や「置換」で指定する文字列をパターン表現する方法で、プログラミング言語やテキストエディタなどで利用できます。

正規表現には、「パターンを表現するための記号=メタ文字」が多数用意されており、それらを組み合わせることで、「aから始まる英単語」「3桁の数字」「行頭の2文字」といった柔軟な文字列を指定することができます。


  • ※正規表現にはプログラム言語やテキストエディタなどにより「方言」があり、メタ文字や記述方法が異なります。
    このページでは「Perl」タイプの正規表現をご紹介しています。

基本のメタ文字

正規表現には記号(メタ文字)がたくさんありますが、ここでは、基本中の基本といえるメタ文字をいくつかご紹介します。
頻繁に利用するメタ文字なのでぜひ覚えてください。
※以下、赤字がメタ文字です。

<…または…>

「または」の対象が1文字の場合は、[ ]内にその候補を指定します。
「または」の対象が文字列の場合は、|で区切って指定します。

AまたはB → [AB]
赤または黄または青 → [赤黄青]

テレビまたはラジオ → テレビ|ラジオ
大阪または京都または奈良 → 大阪|京都|奈良

<…から…のどれか>

対象が1文字の場合には、候補を-で範囲指定できます。

「0」から「9」のどれか → [0-9]
「あ」から「お」のどれか → [あ-お]

<…以外…>

候補や範囲指定の[ ]内に、「^」を記述します。

2、4、6以外 → [^246]
「か」から「こ」以外 → [^-]

<文字の繰り返し>

+」または「*」の前に指定した文字を繰り返すという意味のメタ文字です。
+」は1回以上の繰り返し、「*」は0回以上の繰り返しを意味します。
任意の1文字を表す「」と組み合わせて使用する「.+」や「.*」とあわせて、覚えておくと便利です。

0文字以上の任意の文字列 → .*
1文字以上の任意の文字列 → .+
==============(”=”の連続) → =+
csvファイル(カンマ区切り)内の数字列(nullの場合あり)→ ,[0-9]*


メタ文字をエスケープする

メタ文字は検索や置換の際に特別な意味を持つ記号として扱われますが、時にはメタ文字である文字そのものを検索したいことがあります。
そのような場合は、「ここではメタ文字としてではなく、この文字を検索したい」と宣言する必要があり、そのことを「エスケープする」といいます。
エスケープの方法には、1文字ずつエスケープする方法と、範囲を指定してまとめてエスケープする方法があります。

※以下、赤字はメタ文字、グレーの「\」はエスケープのための「\」です。

1+1=2 → 1\+1=2 (←「+」をエスケープして文字として検索)
y=2*x+b → \Qy=2*x+b\E (←式全体をエスケープして「*」「+」も文字として検索)


最長一致と最短一致

正規表現で繰り返しの「*」や「+」など指定した場合、できるだけ長い文字列を得ようとするのが「最長一致」、できるだけ短い文字列を得ようとするのが「最短一致」です。
このページで紹介しているPerl言語タイプの正規表現は「最長一致」です。「最短一致」にしたいときは、繰り返しのメタ文字の後に「?」を付けます。

※背景つきの部分がヒットした文字列です。

A+ の一致例 → AAAAAAAAAA (最長一致)
A+? の一致例 → AAAAAAAAAA (最短一致)

 

<.+> の一致例 → <h1>タイトルタイトル</h1> (最長一致)
<.+?> の一致例 → <h1>タイトルタイトル</h1> (最短一致)