略記法を使って文字の集合を文字クラスに記述する

文字クラスは列挙した文字のいずれか一つと一致したときにマッチしますが、例えば数字全部や数字とアルファベット全部といった文字の集合を簡単に指定するための略記法が用意されています。ここでは Perl の正規表現で略記法を使って文字の集合を文字クラスに記述する方法について解説します。

(Last modified: )

「\d」「\D」数字を表す略記法

\d は数字を表す文字クラスの略記法です。文字クラスの [0-9] に該当します。

/[0-9]/
/\d/
/[\d]/

上記ではいずれも "0" , "1" , "2" , "3" , "4", "5" , "6" , "7" , "8" , "9" のいずれかにマッチします。 \d は文字クラスを表すブラケット [] の外側でも記述できますがブラケット内にも記述することができます。

また \D は数字以外を表す略記法です。文字クラスの [^0-9] または [^\d] に該当します。

/[^0-9]/
/[^\d]/
/\D/
/[\D]/

上記ではいずれも "0" , "1" , "2" , "3" , "4", "5" , "6" , "7" , "8" , "9" 以外の文字にマッチします。

\d を使い任意の桁数の数字にマッチさせる場合は次のように記述できます。

/\d+/

※キャレット( ^ )はブラケット [] 内に記述した場合だけ否定の意味を持ちますのでブラケットの外で ^\d と記述した場合はまったく違う意味になりますので注意して下さい。

「\w」「\W」単語の構成文字を表す略記法

\w は単語を構成する文字の一つを表す略記法です。文字クラスの [a-zA-Z0-9_] に該当します。アルファベット、数字、アンダーバーのいずれかにマッチします。

/[a-zA-Z0-9_]/
/\w/
/[\w]/

上記ではいずれも "a" から "z" 、 "A" から "Z" 、 "0" から "9" 、 "_" のいずれかにマッチします。 \w は文字クラスを表すブラケット [] の外側でも記述できますがブラケット内にも記述することができます。

また \W は単語を構成する文字以外を表す略記法です。文字クラスの [^a-zA-Z0-9_] または [^\w] に該当します。

/[^a-zA-Z0-9_]/
/[^\w]/
/\W/
/[\W]/

上記ではいずれも "a" から "z" 、 "A" から "Z" 、 "0" から "9" 、 "_" 以外の文字にマッチします。

\w を使い任意の連続する単語を構成する文字にマッチさせる場合は次のように記述できます。

/\w+/

「\s」「\S」空白文字を表す略記法

\s は空白文字を表す文字の一つを表す略記法です。空白文字とは空白 " " の他に改行 "\n" 、復帰 "\r" 、改ページ "\f" 、水平タブ "\t" です。文字クラスの [ \n\r\f\t] に該当します。

/[ \n\r\f\t]/
/\s/
/[\s]/

上記ではいずれも空白、改行、復帰、改ページ、水平タブのいずれかにマッチします。 \s は文字クラスを表すブラケット [] の外側でも記述できますがブラケット内にも記述することができます。

また \S は空白文字以外を表す略記法です。文字クラスの [^ \n\r\f\t] または [^\s] に該当します。

/[^ \n\r\f\t]/
/[^\s]/
/\S/
/[\S]/

上記ではいずれも空白、改行、復帰、改ページ、水平タブ以外の文字のいずれかにマッチします。

\s を使い任意の連続する空白文字に文字にマッチさせる場合は次のように記述できます。

/\s+/
サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

&check("_end_");
&check("_765_");
&check("_And_");
&check("_+7A_");
&check("_A N_");

sub check{
  if ($_[0] =~ /_\w+_/){
    print $_[0]." は /_\\w+_/ にマッチします。\n";
  }else{
    print $_[0]." は /_\\w+_/ にマッチしません。\n";
  }
}

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

略記法を使って文字の集合を文字クラスに記述する(1)

文字クラスの略記法の一つである \w を使って数字またはアルファベットのいずれかの文字とマッチするパターンを作成し、複数の文字列がマッチするかどうか調べて結果を画面に表示しました。

-- --

Perl の正規表現で略記法を使って文字の集合を文字クラスに記述する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。