正規表現を勉強したのでメモ。このメモでは勉強した内容を思い出しやすいように例題と回答も載せておく。
任意の1文字にマッチするメタキャラクタ
任意の1文字にマッチするのは、.(ドット)である。
例題:「This is a book」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a ....
アルファベットと数字とアンダースコアにマッチするメタキャラクタ
アルファベットと数字とアンダースコア_にマッチするのは、¥wである。覚えにくいので¥wのwは”word”の頭文字を取ったものと覚えることにした。
例題:「This is a pen」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a ¥w¥w¥w
¥wを否定するメタキャラクタとして、¥Wが用意されている。否定したいときは大文字になるみたい。つまり、¥Wはアルファベットと数字とアンダースコア(_)以外のものにマッチする。
例題:「This is a !@#$」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a ¥W¥W¥W¥W
空白文字にマッチするメタキャラクタ
空白文字にマッチするのは、¥sである。全角スペースは通常の全角文字1文字として扱われる為、¥sにはマッチしない。¥sは単に半角スペースだけでなく、タブ文字や改行、復帰(CR)、改ページ(FF)などの制御文字にもマッチするので注意が必要。覚えにくいのでsのsは”space”の頭文字を取ったものと覚えることにした。
例題:「This is a (半角スペース4つ)」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a ¥s¥s¥s¥s
¥sを否定するメタキャラクタとして、¥Sが用意されている。否定したいときは大文字。つまり、¥Sは半角スペースとタブ文字や改行、復帰(CR)、改ページ(FF)などの制御文字以外にマッチする。
例題:「This is a +aあ-」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a ¥S¥S¥S¥S
数字にマッチするメタキャラクタ
数字にマッチするのは、¥dである。覚えにくいので¥dのdは”digit”の頭文字を取ったものと覚えることにした。
例題:「This is a 777」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a ¥d¥d¥d
dを否定するメタキャラクタとして、Dが用意されている。否定したいときは大文字。つまり、Dは数字以外にマッチする。
例題:「This is a あa+」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a ¥D¥D¥D
同じ文字の繰り返しにマッチするメタキャラクタ
*は直前の文字がないか、直前の文字が1個以上連続するという場合にマッチする。(0個以上)
例題:「This is a doooog」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a do*g
+は直前の文字が1個以上連続するという場合にマッチする。最低でも1個は+の直前の文字がないといけない。(1個以上)
例題:「This is a doooog」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a do+g
?は直前の文字が0個、もしくは1個の場合にマッチする。(0個、または1個)
例題:「This is a dg」にマッチする正規表現を書け。
This is a [ ]
解答:
This is a do?g
行頭と行末にマッチするメタキャラクタ
^は行頭にマッチする。
例題:「This is a dog a is This」のうち1度目に登場する「This」にマッチする正規表現を書け。
[ ]
解答:
^This
$は行末にマッチする。
例題:「This is a dog a is This」のうち2度目に登場する「This」にマッチする正規表現を書け。
[ ]
解答:
This$
文字列を分割し、いずれかにマッチするかを調べることができるメタキャラクタ
|を使うと文字列ごとにマッチするかどうかを調べることができる。
例題:「あいうえお かきくけこ さしすせそ」のスペース以外の「あいうえお」「かきくけこ」「さしすせそ」にそれぞれマッチする正規表現を書け。
[ ]
解答:
あいうえお|かきくけこ|さしすせそ
文字のいずれかにマッチするかを調べることができるメタキャラクタ
対象の文字を[ ]で囲むことで調べることができる。
例題:「ABCD EFGH IJKL」のスペース以外の「A」「E」「I」にそれぞれマッチする正規表現を書け。
[ ]
解答:
[AEI]
※全てのアルファベットにマッチさせたいときは省略して[A-Z]と書くことができる。数字の場合は[0-9]、ひらがなの場合は[あ-ん]と書くことができる。また、[^A-Z]のように書くことで否定形となり、アルファベット以外の文字にマッチする。
グループ化するためのメタキャラクタ
対象の文字を( )で囲むことでグループ化することができる。
例題:「じゃーん じゃじゃーん じゃじゃじゃーん」のスペース以外の「じゃーん」「じゃじゃーん」「じゃじゃじゃーん」にそれぞれマッチする正規表現を書け。
[ ]
解答:
(じゃ)+ーん
以上
参考
書籍 正規表現書き方ドリル
サルにもわかる正規表現入門