正規表現 講座

正規表現 講座

正規表現 講座

正規表現 講座

正規表現の講座です。順番に、正規表現を理解していきます。

そもそも正規表現がなにかわからない方は、正規表現の入門へどうぞ

スポンサーさん

正規表現 例

正規表現を用いると、テキストをすばやく検索できます。

例えば、以下のようなメニューがあります。

さばのみそ煮
豚肉のしょうが焼き
鶏肉の照り焼き
ポテトサラダ
肉じゃが
肉豆腐

ここで、肉料理のみを、検索したい場合は、正規表現で .*肉.* と入力します。

すると、肉料理のみが、一気に検索できます。
さばのみそ煮
豚肉のしょうが焼き
鶏肉の照り焼き
ポテトサラダ
肉じゃが
肉豆腐

正規表現 メタ文字


正規表現を用いなかったら、文字がぴったりと一致した場合しか、検索が当たりません。
例えば、正規表現なしで、肉料理をすべて検索するためには、以下を入力しなければいけません。

検索:豚肉のしょうが焼き and 鶏肉の照り焼き and 肉じゃが and 肉豆腐
これでは、文字入力に時間がかかってしまいますし、さらに、人間がうっかりと入力間違いをする可能性が上がっていきます。

そこで、コンピューターに対して「肉という記号を含んだテキストを探せ」という命令を出します。
コンピューターは、人間のように「肉料理」を探しているわけではありません。
コンピューターが探しているのは、テキストに「肉」という記号があるかどうかです。

どのような記号を探すべきか、コンピューターに命令する文字を、メタ文字と呼んでいます。
メタ文字には、以下のようなものがあります。

.^$*+?|[]()

正規表現 1文字 検索

正規表現で どれでもいい1文字 を探したい場合は . のメタ文字を用います。
例えば、以下のようなテキストがあります。

私は鳥です。
君は鳥です。
ヒヨコは鳥の子どもです。
コウモリは鳥ではないです。

正規表現で .は鳥です。 と入力します。
すると、以下のように検索できます。
私は鳥です。
君は鳥です。
ヒヨコは鳥です。
コウモリは鳥ではないです。

ここでは . どれでもいい1文字 を表わしています。

. 1文字を表す メタ文字

正規表現 行 はじめ

正規表現で 行のはじめ を探したい場合は ^ のメタ文字を用います。

例えば、以下のようなテキストがあります。

わたしはバナナが好き
わたしが好きなバナナ
バナナが好きなわたし

正規表現で ^わたし と入力します。
すると、以下のように検索できます。
わたしはバナナが好き
わたしが好きなバナナ
バナナが好きなわたし

ここでは ^ 行のはじめ を表しています。

^ 行のはじめ メタ文字

正規表現 行 おわり

正規表現で 行のおわり を探したい場合は $ のメタ文字を用います。

例えば、以下のようなテキストがあります。

わたしはバナナが好き
わたしが好きなバナナ
バナナが好きなわたし

正規表現で わたし$ と入力します。
すると、以下のように検索できます。
わたしはバナナが好き
わたしが好きなバナナ
バナナが好きなわたし

ここでは $ 行のおわり を表しています。

$ 行のおわり メタ文字

正規表現 反復

正規表現で 反復する文字 を探したい場合は ? + * のメタ文字を用います。
これらの3つのメタ文字は、反復の長さをどれくらいにするかで、細かな差があります。

例えば、以下のようなテキストがあります。

えい
えーい
えーーい
えーーーーーーーーーーーーい

正規表現で えー?い と入力します。
すると、以下のように検索できます。
えい
えーい
えーーい
えーーーーーーーーーーーーい

ここでは ー? ー の反復 0回か1回 を表しています。



続いて、正規表現で えー+い と入力します。
すると、以下のように検索できます。
えい
えーい
えーーい
えーーーーーーーーーーーーい

ここでは ー+ ー の反復 1回以上 を表しています。



そして、正規表現で えー*い と入力します。
すると、以下のように検索できます。
えい
えーい
えーーい
えーーーーーーーーーーーーい

ここでは ー* ー の反復 0回以上 を表しています。


? + * 反復のメタ文字

?  反復 0回か1回
+  反復 1回以上
*  反復 0回以上

検索の範囲は、以下のようになっています。
? < + < *

正規表現 2文字以上 検索

正規表現で 2文字以上 を探したい場合は、.*のメタ文字を用います。

.*. どれでもいい1文字* 反復 を組み合わせたメタ文字です。

例えば、以下のようなテキストがあります。

私は鳥です。
君は鳥です。
ヒヨコは鳥の子どもです。
コウモリは鳥ではないです。

正規表現で、以下のように入力します。
.*は鳥

すると、以下のように検索できます。
私は鳥です。
君は鳥です。
ヒヨコは鳥です。
コウモリは鳥ではないです。

ここでは .* のメタ文字の組み合わせが 2文字以上 を表わしています。


なお、コンピューターの世界では 1文字2文字以上 を区別するために 文字文字列 という言葉を用います。

.  どれでもいい文字 (1文字) メタ文字
.* どれでもいい文字列 (2文字以上) メタ文字

正規表現 または 検索

正規表現で または で探したい場合は、|のメタ文字を用います。

例えば、以下のようなテキストがあります。

ヒヨコは鳥の子どもです。
コウモリは鳥ではないです。

正規表現で、以下のように入力します。
鳥|ヒヨコ|コウモリ

すると、以下のように検索できます。
ヒヨコの子どもです。
コウモリではないです。

ここでは 鳥|ヒヨコ|コウモリ鳥 または ヒヨコ または コウモリ を表わしています。


| または メタ文字
A|B AまたはB

正規表現 範囲 検索

正規表現で 範囲 で探したい場合は、[ ]のメタ文字を用います。

例えば、以下のようなテキストがあります。

農場が1つあります。
ニワトリが4羽います。
ヒヨコが5羽います。
タマゴが9個あります

正規表現で、以下のように入力します。
[1-4]

すると、以下のように検索できます。
農場が1つあります。
ニワトリが4羽います。
ヒヨコが5羽います。
タマゴが9個あります

ここでは [1-4]1から4の範囲 を表わしています。


[ ] 範囲 メタ文字
[1-4] 1から4の範囲

正規表現 単位 検索

正規表現で 単位 で探したい場合は、( )のメタ文字を用います。

例えば、以下のようなテキストがあります。

ハメハメハハメメハハ
ハハハメハメハメハメ
メハハハハメハメハメ

正規表現で、以下のように入力します。
(ハメハメハ)

すると、以下のように検索できます。
ハメハメハハメメハハ
ハハハメハメハメハメ
メハハハハメハメハ

ここでは (ハメハメハ)ハメハメハ の単位 を表わしています。


( ) 単位 メタ文字
(ハメハメハ) ハメハメハ の単位

正規表現 まとめ

メタ文字 一覧
.^$*+?|[]()


どれでもいい文字・文字列
.  どれでもいい文字 (1文字) メタ文字
.* どれでもいい文字列 (2文字以上) メタ文字

行のはじめ・おわり
^  行のはじめ メタ文字
$  行のおわり メタ文字


反復
? + * 反復のメタ文字
反復回数
?  反復 0回か1回
+  反復 1回以上
*  反復 0回以上
検索範囲
? < + < *



| または メタ文字
A|B AまたはB


範囲
[ ] 範囲 メタ文字
[1-4] 1から4の範囲


単位
( ) 単位 メタ文字
(ハメハメハ) ハメハメハ の単位


正規表現は、現代では、必須の文章術ですので、しっかりと習得しておきましょう。

正規表現 一覧

スポンサーさん