読者です 読者をやめる 読者になる 読者になる

正規表現(6)

その他 その他-正規表現について
[abc] aかbかc いずれかの1文字


第4回に出てきた『 | 』は文字列に対して使用しましたが、こちらはそれの1文字バージョンです。
[abc]と書くことで、abcの3つの文字が一致の対象となります。

a or b or c

と読み替えて考えるとわかりやすいと思います。『[ ]の中に含まれている文字のいずれか1文字』という事です。

(例1)

f:id:four_or_three:20160622200940j:plain:w250


これだけで済めば簡単なのですが、付随事項が多く、なかなか(説明が)面倒なメタ文字であります。

[abcdefghijklmnopqrstuvwxyz]


これは[ ]の中に小文字のアルファベットを全部並べたものです。
全てorでつながっていることになりますので、これは「小文字のアルファベット1文字」を表す正規表現となります。
これだと実際に使うのは面倒なので、次のように表現を簡略化して書くことができます。

[a-z]


[◯-◯]を使った表現はいろいろありますが、よく使いそうなものを下にあげておきます。

[A-Z]


大文字のアルファベット1文字を表します。

[0-9]


数字1文字を表します。

[a-zA-Z]


大文字か小文字のアルファベット1文字を表します。
[ ]の中の文字は全てorでつながっており、『いずれかの1文字』を表していることを考えると理解しやすいと思います。

[a-z0-9]


小文字のアルファベットか数字のいずれかの1文字を表します。

(例2)

f:id:four_or_three:20160622201231j:plain:w250

Patternには、さいとう[0-9A-Z]たかをと書いています。

[^abc] a、b、c以外の1文字


[ ]の中身abcの先頭に^を付けることで、「aでもない、bでもない、cでもない1文字」を表す表現となります。

^第4回で「行頭を表すメタ文字」と説明しましたが、[ ]の中に入れることで、このように別の役割を持ったメタ文字に変化します。

(例3)

f:id:four_or_three:20160622201443j:plain:w250


この、「aでもbでもcでもない1文字」の表現においても、前出のアルファベットや数字の表現が使用できます。

[^a-z]


小文字のアルファベット以外の1文字を表します。 小文字のアルファベット以外の全てです。大文字のアルファベットも、全角のアルファベットも、日本語のひらがなも、漢字も、ヒンディー語も全て一致します。

[^A-Z]


大文字のアルファベット以外の1文字を表します。

[^0-9]


数字以外の1文字を表します。

[^a-z0-9]


小文字のアルファベットでも数字でもない1文字を表します。

(例4)

f:id:four_or_three:20160622201642j:plain:w250

Patternには、さいとう[^0-9A-Z]たかをと書いています。

[〜]の表現に付随するエスケープ処理の必要不要


[ ]の中に入れる時に、通常の文字として検出するためにエスケープが必要なメタ文字を下に挙げます。

[
]
-
^
\ を使用するメタ文字


これらの5種の文字は、普通の文字として[ ]の中に入れる時はエスケープ処理をしておかないとエラーが出たり誤検出が起きたりしますので確実にエスケープしておきましょう。
前に\(バックスラッシュ)を付けるだけです。もちろん、メタ文字として使用するときにはエスケープせずそのまま記述します。

正確には、エスケープしなくても誤動作しないケースがあるのですが、余計なことは考えずに全てエスケープしておいたほうが面倒がなくていいと思います。

メタ文字を普通の文字として使用するにはエスケープが必要、これは当たり前なのですが、なぜわざわざ取り上げたかというと、エスケープが必要でないメタ文字もあるからです。
上に挙げた5種の文字以外のメタ文字は、[ ]内で使用される場合に限り、エスケープ処理をしなくても普通の文字として解釈されます。[ ]内の特例です。エスケープしてもかまいません。エスケープしてもしなくても、どちらでも同じ結果になります。

逆に言うと、それらは[ ]の中ではメタ文字として機能させることができません。

(例5)

f:id:four_or_three:20160622201951j:plain:w250

[ ]の中に入っている文字を見てみましょう。

\]+


\]で、メタ文字]をエスケープして通常の]にしています。
+は通常、『直前の文字が1回以上繰り返される』を表すメタ文字ですが、[ ]の中では普通の文字としての+と解釈されます。
これらをまとめると、

] or +

ということになります。

第7回に続きます。

広告を非表示にする