VZユーザーのための,VWXによる正規表現利用のてびき
初出:nifty:FGALDC/MES/13/09142〜 (2002/06/18〜2002/07/21)
例えば,数字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]
まぁ,これくらいでも勘弁して欲しいところですが,英数字くらいなら書こうと思えば書けないことはありません。しかし数千字もある漢字になるとありがたみがまったく違ってきます。
使う上での注意点です。
以上の点に注意すれば,メタキャラクタはほぼそのまま書けます。
VWXでは『
』や『 』で解釈に失敗する例があるとのべましたが,癖を覚えておけば大丈夫です。これをバグだと騒ぎたてるよりも,飼い馴らすことを考えたほうがシアワセになれるでしょう。また,範囲指定する場合は,順序だけでなく範囲にも注意してください。
[A-z]では,余計な記号([\]^_`)も含んでしまいます。
コード範囲 | 文字 |
---|---|
40h〜4Fh | @ABCDEFGHIJKLMNO |
50h〜5Fh | PQRSTUVWXYZ[\]^_ |
60h〜6Fh | `abcdefghijklmno |
70h〜7Fh | pqrstuvwxyz{|}~ |
さて,長くなりましたので,文字クラスの具体例は次回に譲ることにします。