気の向くままに辿るIT/ICT/IoT
Perl

Perl メタ文字/メタキャラクタ

ホーム前へ次へ
Perlのパターンマッチでメタ文字ってどうやって使うの?

Perl メタ文字/メタキャラクタ

Perl 正規表現/パターンマッチ・パターンマッチング

正規表現 / Regular Expression

パターンマッチング / Pattern Match / Pattern Matching

演算子 / Operators

修飾子 / Modifiers

量指定子 / Quantifiers

メタ文字/メタキャラクタ / Metacharacters

エスケープシーケンス / Escape sequences

文字クラス / Character Classes

特殊なエスケープ文字 / Special Escapes

...etc.

Perl メタ文字/メタキャラクタ

 メタとはデータを表す為のデータという意味合いなので、メタ文字/メタキャラクタとは文字を表す為の文字というニュアンスになります。

メタ文字意味
\バックスラッシュ代替記号yenマーク
次の特殊文字の意味を無効に(エスケープ/回避)する
^キャレット
ハット
行頭にマッチ
.ピリオド
ドット
改行以外の文字にマッチ
$ドル
ダラー
行末または、改行の直前にマッチ
|パイプ
縦棒
選択肢
 regexp | regex | "regular expression"
丸カッコと併用
 ( unix | linux | windows | mac )
()丸カッコグループ化
[]角カッコ
ブラケット
角カッコで括り文字や数値を単一または複数、または、その範囲を指定
例:小文字aからcなら[a-c]
ブラケット内で評価されるのは基本1文字なので留意
OKパターン:[pP][eE][rR][lL]
NGパターン:[perlPERL]
但し、NGパターンで正しく評価されたように見えるケースもあり得るが、それはそう見えるだけ
 

 /^$/;

 m#^$#;

空行にマッチ

 キャレットに続けてドル ^$ とすると空行とマッチします。

 このmは修飾子ではなくマッチング演算子(パターンセパレータが既定のスラッシュの場合のみ m 省略可)です。

 尚、空行検索ではなく、空行削除の場合は、修飾子を付与するなどして改行文字(UNIX/Linuxなら\n/Windowsなら\n/Macなら\r)も含める必要があります。

 キャレットは、ブラケット[ ]内先頭に置く場合に限り否定(~以外)を表します。

[^0-9]

数値以外

[^a]

a以外

[^k]ind

k以外で始まりindが続く(find,wind...etc.)

 丸カッコは、s演算子等で置換前パターンの一部または稀に全部を括り、置換後パターンにおいて特殊な変数を使った後方参照(置換前のパターンの転用)を可能にします。

[prompt] perl -e '$a="100 PERL";$a=~s/\d+\s(\w+)/$1/;print "\$a is $a\n";'

[prompt] $a is PERL

 ちなみにPerlスカラー変数($a)を出力する為にprint文のところでバックスラッシュによるエスケープをしています。

ホーム前へ次へ