詳説 正規表現 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以外のすべての文字