詳説 正規表現 Part2

Rubyの簡単なサンプル

if ($reply =~ m/^[0-9]+$/)

=~ の部分は マッチする と読むと便利。

m は正規表現マッチを試みるという意味。

 

$celsius =~ m/([-+]?[0-9]+)([CF])$/

括弧で囲むことによって、$1には [-+]?[0-9]+ にマッチしたテキスト、$2には [CF] にマッチしたテキストがセットされる。

 

$input = <STDIN>;

ユーザが入力した1行を読み込む。

 

chomp($input);

$inputの末尾の改行文字を取り除く。

 

$input =~ m/^([-+]?[0-9]+(\.[0-9]*)?)([CF])$/

小数も入力できるようにしたもの。

小数部分の (\.[0-9]*)? は?のための括弧だが、これも変数にキャプチャされる。

つまり $1 には [-+]?[0-9]+(\.[0-9]*)?)

            $2 には (\.[0-9]*)

            $3 には ([CF]) にマッチしたテキストがセットされる。

 

[<space><tab>]*

スペースとタブの混合に対応できる。

<tab>の代わりに、見た目的にわかりやすい\t というメタ文字が用意されている。

他にも \n 改行や、 \f ASCIIの改ページ、 \b バックスラッシュ がある。

 

\s*

\s は空白文字にマッチする文字クラス全体の略記法である。

空白文字には、スペース、タブ、改行、復帰が含まれる。

これで空白文字全般にマッチできる。

 

m/^[CF]$/i

/i記法はPerlの修飾子の指定方法の1つである。

/iは正規表現の後ろに置くと、大文字と小文字の区別をしないようにPerlに指示する。

 

\t タブ文字

\n 改行文字

\r 復帰文字

\s 任意の空白文字

\S \s以外のすべての文字

\w [a-zA-Z0-9_]

\W \w以外のすべての文字

\d [0-9]

\D \d以外のすべての文字