kyoneco’s blog

教育、数学、統計といったテーマについて考えていきます

詳説 正規表現 第二章 正規表現をテキストにマッチさせる 読書メモ

正規表現 第二章 読書メモ その1
前回の続きです。

 

kyoneco.hatenablog.com

 

 

<序 Perlの簡単な解説>

Perl:1980年代に開発されたスクリプト言語。この言語のコンセプトはawk,sedから発展させたもの。
$:明示的な変数の宣言。 ex. $celsius = 30;
Perlではダブルクォート文字列の中に変数を書くことができる。ex. “$celsius C is …”;
 

正規表現をテキストにマッチさせる 今回の主題 (2.3にはいるまで)>

m/…./ :正規表現マッチする
=~ : 正規表現とターゲット文字列を結びつける.マッチすると読む。
ex. $reply =~ m/^[0-9]+$/
→^と$でかこむことで $reply全体が数字のみで構成されているかチェックしている
 

・もっと本格的に 負数や小数の値も受け付けられるようにしたい

  [-+]?      マイナス、プラス記号に対応
  (\.[0-9]*)?   小数部分に対応 
 

・マッチが成功したときの副作用 

  華氏と摂氏とちらの値も入力できるようにしたい
  末尾に[CF]と追加し、キャプチャするために括弧でくくる([CF]).$2にCかFが入る
 

・入り組んだ正規表現

  プログラムの変更で他の括弧が必要になったときに、
  変数の番号がずれてしまうことがある
  (?:...) キャプチャされない括弧をつかうこともできる
 

ちょっと寄り道 なんのメタ文字なのか 

   シェルにもメタ文字があるので異なるタイプのメタ文字をきちんと区別する 
・空白全般を表す\s
 

中締め

   \t タブ文字
   \n 改行文字
   \r 復帰文字
   \s 任意の空白文字
   \S \s以外のすべての文字
   \w [a-zA-Z0-9_] 単語にマッチさせるには\w+という形が便利
   \d [0-9]
   \D \d以外のすべての文字
   /i 大文字と小文字の区別がなくなる
 

メモ

この章の出だしはPerlをつかって具体的なプログラムが出来上がる過程をみながら正規表現について学んでいくという構成です。
そのプログラムは「摂氏と華氏の変換」であり、これのために正規表現をどのようにつかうかをみていきます。正規表現はプログラムへの入力の部分の妥当性のチェックに用いられています。仮想ユーザーが入力する数字等が変換計算に用いることができるかを計算部分の前にチェックするために正規表現を利用しています。