有限会社ミスティーネットPerl・CGI講座 パール・CGIレッスン MISTY-NETレンタルサーバー・PERLプログラミング講座 CGI&PERL究極のレシピ

管理運営:有限会社ミスティーネット

| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 |
Perl言語リファレンス

ミスティーネットPerl・CGI講座/基本編
ミスティーネットPerl・CGI講座/基本編
始めに 始めに
変数について 変数について
処理の制御1 処理の制御1
処理の制御2 処理の制御2
配列の処理 配列の処理
ハッシュの処理 ハッシュの処理
数値の扱い 数値の扱い
文字の扱い 文字の扱い
時間の処理 時間の処理
サブルーチン サブルーチン
ファイルの処理 ファイルの処理
ディレクトリの処理 ディレクトリ処理
CGIについて CGIについて
漢字の処理 漢字の処理
    (文字コード)
Cookie の処理 Cookie の処理
正規表現1 正規表現1
正規表現2 正規表現2
演算子について 演算子について
ライブラリ ライブラリ
デバッグ デバック
環境変数について 環境変数
ミスティーネットPerl・CGI講座/基本編

ミスティーネットPerl・CGI講座/応用編
ミスティーネットPerl・CGI講座/応用編
カウンターを作ってみよう カウンターを
     作ってみよう!
ミニゲームを作ってみよう ミニゲームを
     作ってみよう!
ミスティーネットPerl・CGI講座/応用編

ミスティーネットPerl・CGI講座/WEB講座一覧
ミスティーネット
HTML講座 HTML講座
スタイルシート講座 スタイルシート講座
JavaScript講座 JavaScript講座
UNIXコマンド講座 UNIXコマンド講座

ミスティーネット
ラブラブメールでツーショット

人気サイトランキング

人気サイトランキング

8daysランキング

  HOME >> 正規表現について1
  1. 正規表現とは?
  2. 簡単な文字のマッチング
  3. 〜のいずれか1文字にマッチ
  4. いずれかの単語にマッチ
  5. 繰り返し文字の指定

■ 正規表現とは?
正規表現を使うと文字列が、特定のパターンにマッチしているかを調べることが出来ます。
特定の文字列が含まれているかを調べるなら、index 関数を使えますが、
例えば、「http://」 から始まる文字列や、1つの 「@」 を含む8文字以上の文字列
などのように、正規表現を使うとより正確な文字のマッチングを行なうことが可能です。




■ 簡単な文字のマッチング
正規表現を使った文字のマッチングは下記のように行ないます
修飾子はなくても検索できます。

   → 修飾子について
[書式] 検索対象の文字列 =~ m/検索文字/(修飾子);
# 「xyz」 という文字列を含んでいるかどうかを調べるには場合

$charactor = "abcdefghijklmnopqrstuvwxyz";    ← 検索対象の文字列をセット

if ( $charactor =~ /xyz/ ) {    ← 文字列のマッチング
   print "xyz を含んでいます。\n";
}
正規表現を使った文字のマッチングでは、文字がマッチした場合には真を、しなかった場合には偽を返すため、条件分岐によく使われます。
ここでは、文字列 「xyz」 を含んでいた場合には、「xyz を含んでいます」 というメッセージを表示しています。




^」 は、〜始まる文字、「$」 は、〜出終わる文字を指定します。
その他にも位置を指定する記号がいくつかありますので、下記ページを御参照ください。

   → 位置指定子の詳細

$charactor = "abcdefghijklmnopqrstuvwxyz";    ← 検索対象の文字列をセット

if ( $charactor =~ /abc/ ) {    ← 文字列のマッチング
   print "「abc」 から始まる文字列です。\n";
} if ( $charactor =~ /xyz$/ ) {    ← 文字列のマッチング
   print "「xyz」 で終わる文字列です。\n";
}




正規表現の特徴の1つとして、検索文字にメタ文字を使用することが出来ます。
メタ文字を使うと、「数字1文字に一致」 などのようにより自由度の高いマッチ処理を行なうことが出来ます。

   → 各種メタ文字の詳細

# 「00:00:00」 の時刻フォーマットかどうかを調べる場合

$time = "12:33:24";

if ( $time =~ /^\d\d:\d\d:\d\d$/ ) {    ← 文字列のマッチング
   print "00:00:00 形式の時刻データです。\n";
}
「\d」 は数字1文字にマッチします。
「^」 は行頭に一致の意味です。
「$」 は行末に一致の意味です。




■ 〜のいずれか1文字にマッチ
複数の文字の中からいずれか1文字をマッチさせる場合には、文字クラスを使います。
文字クラスは、[] の中にマッチさせたい文字を複数入力します。
「-」 を使うと範囲指定を行なうことも出来ます。

# 「a」 、「b」 、「c」 のいずれかの文字列を含んでいるかどうかを調べる場合

$charactor = "abcdefghijklmnopqrstuvwxyz";

if ( $charactor =~ /[abc]/ ) {    ← a か b か c の文字列のマッチング
   print "a か b か c を含んでいます。\n";
}

# 範囲指定を使った場合
if ( $charactor =~ /[a_c]/ ) {    ← a から c のいずれかの文字列のマッチング
   print "a か b か c を含んでいます。\n";
}
範囲指定では下記のような使い方が出来ます。
一番下の例のように併せ技も可能です。
[0-9] ・・・ 0 〜 9まで
[A-Z] ・・・ A 〜 Zまで
[a-z] ・・・ a 〜 z
[ぁ-ん] ・・・ 「ぁ」 〜 「ん」まで
[0-9A-Za-z] ・・・ アルファベットと数字



■ いずれかの単語にマッチ
正規表現では、パターンをパイプ(|)で区切ることで、検索する文字列を複数選択することが出来ます。


# 「おはよう」 、「こんにちは」 、「こんばんは」 のいずれかにマッチするかを調べる場合

$charactor = "おはようエブリデイ";

if ( $charactor =~ /おはよう | こんにちは | こんばんは/ ) {
   print "「おはよう」 か 「こんにちは」 か 「こんばんは」 を含んでいます。\n";
}


    Perl 実例集 → 高速な文字のマッチング処理


■ 繰り返し文字の指定
一定の文字パターンの繰り返しが含まれた文字をマッチングするには、量指定子を使います。
これは、指定子の前に来る文字列に有効となります。

   → 量指定子について

[0文字〜1文字のマッチング]
if ($charactor =~ /^\d?$/) { print "0文字か1文字の数字\n"; }
if ($charactor =~ /^\d*$/) { print "0文字以上の数字\n"; }
if ($charactor =~ /^\d+$/) { print "1文字以上の数字\n"; }

[n文字〜m文字のマッチング]
if ($charactor =~ /^\d{5}$/) { print "5文字の数字\n"; }
if ($charactor =~ /^\d{5,}$/) { print "5文字以上の数字\n"; }
if ($charactor =~ /^\d{5,10]$/) { print "5文字以上10文字以下の数字\n"; }

[2文字以上の文字列に対して回数を指定したマッチング]
if ($charactor =~ /^(XYZ)?$/) { print "XYZ か空文字\n"; }
if ($charactor =~ /^(XYZ)*$/) { print "空文字か 0回以上の XYZの繰り返し\n"; }
if ($charactor =~ /^(XYZ)+$/) { print "空文字か 1回以上の XYZの繰り返し\n"; }
if ($charactor =~ /^(XYZ){5}$/) { print "5回の XYZ\n"; }
if ($charactor =~ /^(XYZ){5,}$/) { print "5回以上の XYZ\n"; }
if ($charactor =~ /^(XYZ){5,10]$/) { print "5回以上10回以下の XYZ\n"; }






← 前のページへ戻る 次のページへ →


| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問い合わせ | ミスティーネット |
(C)Copyright 2002 有限会社ミスティーネット Inc. All Right Reserved.