第7章 正規表現の基本 練習問題

本日はまだおてんと様も昇ってないようですよ。正規表現は詳説正規表現でわりとやったので、一気にいくよん。

初めてのPerlのp122に正規表現のテスト用スクリプトが用意されています。問題1、2、3で使うので以下に引用。

#!/usr/bin/env perl -w

while {
    chomp;
    if(/パターンをここに置く/) {
        print "Matched: |$`<$&>$'|\n";
    } else {
        print "No match\n";
    }
}

1. fredを含む文字列にマッチする正規表現

文字列のどこかにfredがあれば良いので、

/fred/

ですね。/iオプションはないので

2. 少なくとも1個のaの後ろに任意個のbが続くような部分文字列を持った文字列にマッチする正規表現

/a+b*/

少なくとも1個は+、任意個は*。

3. 任意個の逆スラッシュの後ろに任意個のアスタリスクを持った文字列にマッチする正規表現

なんだか、ややこしそうだけど、

/\\*\**/

まぁ、そうでもない。

4. wilmaを含む文字列を表示するようなスクリプト

マッチしたら表示なので、

while(<>) {
    if (/[Ww]ilma/) {
        print $_;
    }
}

な感じでいかがか。まだここでは文字クラスは出てないけど使っても良いよね。解答によると、print $_の$_はデフォルトなので必要ない。

5. fredとwilma両方を含む文字列を表示するようなスクリプト

単純に、条件でANDを取る。

while(<>) {
    if (/wilma/ && /fred/) {
        print;
    }
}

正規表現ばかりであまりPerlしなかったな。

詳説 正規表現 第2版

詳説 正規表現 第2版