大文字と小文字を区別せずにマッチを行う(「/i」修飾子)

オプション修飾子の一つである「/i」を設定すると、パターンが対象の文字列にマッチするかどうか調べるときに大文字と小文字を区別せずにマッチするようになります。ここでは Perl の正規表現で使用する「/i」修飾子の使い方について解説します。

(Last modified: )

「/i」修飾子の使い方

パターンに /i 修飾子を指定すると大文字と小文字を区別せずにマッチを行います。書式は次の通りです。

m/パターン/i

簡単な例で考えてみます。まず /i 修飾子を使用しない場合です。

/Test/

上記の場合、マッチする文字列とマッチしない文字列は次のようになります。

〇 Test
× test
× TEST
× tesT

これに対して /i 修飾子を指定した場合は次のように記述します。

/Test/i

上記の場合、マッチする文字列とマッチしない文字列は次のようになります。

〇 Test
〇 test
〇 TEST
〇 tesT

このように /i 修飾子を指定した場合には大文字と小文字が区別されずにマッチされます。

サンプルコード

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

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

&check1("Test");
&check1("test");
&check1("TEST");

print "----\n";

&check2("Test");
&check2("test");
&check2("TEST");

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

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

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

perl sample.pl

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

大文字と小文字を区別せずにマッチを行う(1)

パターンに「/i」修飾子を付けることで大文字と小文字を区別せずにマッチするかどうか調べるようになりました。

-- --

Perl の正規表現で使用する「/i」修飾子の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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