例題 2テキストファイルを入力として, その中で次のパターンが登場する行のみを表示する Perl スクリプト find_pattern.pl を作りなさい:(パターン) 「数字が 1 文字以上登場し, その後ろに ax または by が登場する.途中に空白は入らない.」 例えば, 
     8525ax           ... OK
     089927xxxx       ... NG(ax も by も登場しない)
     yyy089927byxxxx  ... OK(089927by が含まれる)
     xyzby            ... NG(byの直前に数字がない)
     
     
     (実行例)
      解答例
     while ( $line = <> ){
        if ( $line =~ /\d+(ax|by)/ ){
           print $line;
        }
     }
     
     解説(1)数字まず,「数字」というパターンをどうやって指定するか説明する. 数字ということは 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 という 10 種類の文字の中のどれかということになる. これに対し,当然ながら if 文を 10 個書くというのは現実的でない. この場合,「0 から 9 の中のどれか 1 つ」を表す便利なパターン表記がある: 
     [0-9]
     また,これは特別に
     
     \d
     と書いてよいことになっている.
     そこで「1 桁の数字」を「\d」で表すことにする.
     
     
     (2)1 回以上の登場
      
     \d+
     と書ける.
     
     (3)ax または by の登場
      
     (ax|by)
     もちろん,この書き方を(1)に適用してもよい:
     
     (0|1|2|3|4|5|6|7|8|9)
     しかし,こちらの場合は \d と書くか [0-9] と書く方が圧倒的に容易であろう.
     
     (参考)文字集合の表現 
  |