Vz resources : Regular Expression

耳より正規表現入門

VZユーザーのための,VWXによる正規表現利用のてびき
初出:nifty:FGALDC/MES/13/09142〜 (2002/06/18〜2002/07/21)

第12回  メタキャラクタの使い方 (7-3) [.-.] (ブラケットとダッシュ)

例えば,数字1文字にマッチさせたい場合があるとします。

そのまま素直に書けば,[0123456789]になるでしょう。便利なことに,連続した文字コードの場合は先頭と末尾の文字を『-』で連結することで,範囲指定とすることができます。

[0-9]

数字くらいなら全部書いても大した手間ではありませんが,大小アルファベットになると52字ありますから大変です。

[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]

こんな場合は,以下のように範囲指定ができます。

[A-Za-z]

また,4桁の数字を指定するとなると,たいへん面倒なことになってしまいますが,範囲指定を使えばだいぶ楽になります。並べてみるとよくわかりますね。

[0123456789][0123456789][0123456789][0123456789]

  ↓

[0-9][0-9][0-9][0-9]

プロバイダから与えられたログインIDなどを表現するなんてことになったら,気が遠くなりそうです。そんな場合でも,以下のように書けます。

[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9]

まぁ,これくらいでも勘弁して欲しいところですが,英数字くらいなら書こうと思えば書けないことはありません。しかし数千字もある漢字になるとありがたみがまったく違ってきます。

[ぁ-ん]
ひらがな
[ァ-ヶ]
かたかな
[А-Яа-я]
ロシア文字
[亜-腕]
漢字第一水準
[弌-龠]
漢字第二水準
[堯-瑤]
JIS X 208追加

使う上での注意点です。

(注)
VWXでは『-』の解釈に失敗するようです。文字クラスのブラケットの中で意味を持つ文字だけを検索したい場合[]^-]と書けばよいはずですが,『-』だけマッチしません。また,先の例では[abc-]とすると正規表現としてでなく通常の検索で"[abc-]"にヒットします。

以上の点に注意すれば,メタキャラクタはほぼそのまま書けます。

VWXでは『\』や『-』で解釈に失敗する例があるとのべましたが,癖を覚えておけば大丈夫です。これをバグだと騒ぎたてるよりも,飼い馴らすことを考えたほうがシアワセになれるでしょう。

また,範囲指定する場合は,順序だけでなく範囲にも注意してください。

[A-z]では,余計な記号([\]^_`)も含んでしまいます。

コード範囲文字
40h〜4Fh@ABCDEFGHIJKLMNO
50h〜5FhPQRSTUVWXYZ[\]^_
60h〜6Fh`abcdefghijklmno
70h〜7Fhpqrstuvwxyz{|}~

さて,長くなりましたので,文字クラスの具体例は次回に譲ることにします。


The VZ resources. ©2002 by mezala. mailto:mezala@nifty.com