_

■正規表現

●過去扱ってきた言語に正規表現などと言うものは存在しなかった。上手く使うと非常に便利である。(パターンマッチ、パターンマッチング )以下、簡単にまとめておく。

■マッチパターン演算子

i _ 大文字、小文字の区別なし

s _ 単一行として処理 (^、$ は、\n を無視)

m _ 複数行として処理 (^、$ は、行先頭、行末尾)

x _ 空白を無視、# をコメント処理

■メタ文字

. _ 改行を除く任意の 1 文字

* _ 0 回以上のパターン繰り返し

+ _ 1 回以上のパターン繰り返し

? _ 0 または 1 回のパターン

^ _ 先頭から

$ _ 末尾から

\ _ メタ文字クォート

| _ パターン論理和

()_ パターングループ

[] _ 文字クラス

{} _ 量指定子

\n _ 改行 文字クラスでも指定可

\r _ キャリッジリターン 文字クラスでも指定可

\f _ ラインフィード 文字クラスでも指定可

\t _ タブ 文字クラスでも指定可

\d _ 数字 [0-9] 文字クラスでも指定可

\D _ 数字以外 [^0-9]

\w _ 英数字単語 [_a-zA-Z0-9] 文字クラスでも指定可

\W _ 英数字単語以外 [^_a-zA-Z0-9]

\s _ 空白 [ \t\n\r\f] 文字クラスでも指定可v

\S _ 空白以外 [^ \t\n\r\f] \b _ 単語境界 \w、\W の間 文字クラスでも指定可

\B _ 単語境界以外

\x??_ 16 進数

■文字クラス

- 範囲

^ 先頭に置くと以外にマッチ

/[0123456789]/ 数字にマッチ

/[0-9]/ 数字にマッチ

/[^0-9]/ 数字以外にマッチ

/[a-zA-Z]/ 英字にマッチ

/[a-fA-F\d]/ 16 進数にマッチ

■量指定子

{}? 最短マッチ(? がないと最長マッチになる)

* 0 回以上のパターン繰り返し + 1 回以上のパターン繰り返し ? 0 または 1 回のパターン {n}? n 回繰り返しマッチ {n,}? n 回以上繰り返しマッチ {n, m}? n 回以上、m 回以下繰り返しマッチ ■例 /abc/ abc にマッチ /a.c/ a?c にマッチ /a(bb|b1|b2)c/ abbc、ab1c、ab2c にマッチ /^abc/ abc で始まるとマッチ /abc$/ abc で終わるとマッチ /^$/ 空行とマッチ /ab?c/ ac、abc にマッチ /a.*c/ ac、abc、ab1c などにマッチ /a.+c/ abc、ab1c などにマッチ /[0-9]{1, 2}/ 0 〜 99 にマッチ /[a-zA-Z]{8,}/ 英字 8 文字以上にマッチ /あいうえお{2}/ 「あいうえおお」にマッチ /(あいうえお){2}/ 「あいうえおあいうえお」にマッチ ■マッチ演算子 m/マッチパターン/ c g と併せて使用し、失敗時の位置リセット禁止 g マッチするものすべて i 大文字、小文字の区別なし s 単一行マッチ m 複数行マッチ o パターンコンパイル x 空白を無視、# をコメント処理 $1, $2, ... () の n 番目マッチ文字列 $& 正規表現マッチ部分 $` マッチ部分の前 $' マッチ部分の後 $+ 最後の () にマッチした文字列 if ($s =~ m/abc/i) { マッチ処理; } ■置換演算子 s/マッチパターン/置換文字列/ e 置換文字列を式とする g マッチするものすべて i 大文字、小文字の区別なし s 単一行マッチ m 複数行マッチ o パターンコンパイル x 空白を無視、# をコメント処理 $s =~ s/abc/123/i; #// abc を 123 に $s =~ s/