正規表現マニアになろう 中級編
ということで中級編です。
前回の初級編を理解していないとサッパリちんちんです。

今回は覚えることが少ないので、楽勝です。

[〜][]内のいずれかの文字を含む場合。-を使うと連続した文字の指定も可能。例えば[あいうえお]は「あいうえお」のいずれかで、[あ-お]も「あいうえお」のいずれかです。[0-9]と表記すれば半角数字のできあがり。
[^〜]上記とは逆に、[]内に含まれていない場合になります。
\w[A-Za-z0-9_]と同じ。
\W[^A-Za-z0-9_]
\d[0-9]
\D[^0-9]
\n改行
\tタブ
\s半角スペース、タブ、改行を表す。
\S上記以外。


さて、覚えることが少ない割には表にはいっぱい書いてますけども、今回は [] だけ理解できれば大丈夫です。
他の\wや\dなどは[]の省略形なので、慣れたらそっちを使えばいいということで、あと言語によっては使えないのもあった気がしたので、とりあえず[]だけ。



んで今回の[]なんですけども、これと前回の初級編のやつを組み合わせることで飛躍的に正規表現の自由度が高くなりました。

とりあえず例と一緒に解説します。



あ[かお]い
「あかい」又は「あおい」が一致します。
「あつい」、「あほい」、「あぶない」、「あしくさい」には一致しません。
ちなみに「あかかい」や「あおおい」、「あかおい」などにも一致しません。


あ[^かお]い
さっきと逆に、含まれていない場合に一致します。
「あつい」、「あまい」、「あらい」は一致します。
「あかい」、「あおい」は一致しません。


t[a-z]p
tとpの間に、aからzの文字が1文字入るということです。
「tap」、「tip」、「top」は一致します。
「tp」、「tooop」は一致しません。
また大文字と小文字は別扱いなので、「tAp」や「tIp」も一致しません。


t[A-Za-z]p
先ほどと似ていますが、今回はAからZの大文字も含めるという意味になっています。
なので、「tap」はもちろん、「tAp」も一致します。



以下は初級編との組み合わせ技です。


あ[かお]+い
「+は、前の文字を1回以上」という意味なので、この場合は「か」又は「お」が1回以上という意味になります。
「あかい」、「あかい」はもちろん、「あかかい」、「あおおい」、「あかおい」も一致します。


あ[かお]?い
「?は、前の文字が0回又は1回」という意味です。
「あい」、「あかい」、「あおい」が一致します。
「あかかい」など2文字以上は一致しません。



^[あかさたな]い
^の位置に注意してください。
^は[]内にある場合は[]内の文字を含まないという意味ですが、今回は[]の外にあります。
この場合は、「あ、か、さ、た、な」のどれかで始まるという意味になります。(詳しくは初級編を参照)
「あい」、「かい」、「さい」、「たい」、「ない」は一致しますが、
「ちかい」、「むさい」、「うんこじゃない」は一致しません。


^[あかさたな]+い
さっきの応用になります。
「あたたかい」、「かたい」、「たたない」は一致します。
「すごくあたたかい」、「すごくかたい」、「すごくたたない」は一致しません。











ということで、例題です。
次の文字列から、一致する正規表現を回答群から選んでください。
初級なので簡単です、ちゃんと一つ一つを理解していればわかります。
(正解は1つです。正解の部分をマウスでドラッグすると正解が見えます)

文字列
「リンゴ16個とレモン4個を購入」

回答群
A「リンゴ[123456]個とレモン[0-9]個を購入」
B「リンゴ[0-9]?個とレモン[0-9]?個を購入」
C「リンゴ[0-9]+個とレモン[0-9]+個を購入」
D「リンゴ[^0-9]個とレモン[^0-9]個を購入」



正解は…C
インターネットは難しい
Comment投稿

豚小屋

糞豚大先生