正規表現 / Regular Expression
パターンマッチング / Pattern Match / Pattern Matching
演算子 / Operators
修飾子 / Modifiers
量指定子 / Quantifiers
メタ文字/メタキャラクタ / Metacharacters
エスケープシーケンス / Escape sequences
文字クラス / Character Classes
特殊なエスケープ文字 / Special Escapes
...etc.
文字クラスとはPerlに限らずUNIX、ひいてはUNIX互換のLinuxで一般的に利用される正規表現におけるパターンの記述方法で、とても柔軟に記述することができ、ブラケットで括られた文字、数値の並びや範囲で示されたパターンとのマッチングに利用します。
文字クラス | 意味 |
---|---|
例:[Z][0-5]/ブラケット内になんらかの範囲を指定可能 | |
[a-z] | アルファベット小文字aからzの26文字何れかにマッチ |
[A-Z] | アルファベット大文字AからZの26文字何れかにマッチ |
[a-zA-Z] | 大文字/小文字問わずアルファベットの52文字何れかにマッチ |
[0-9] | 数値0から9の何れかにマッチ |
[a-zA-Z0-9] | 大文字/小文字問わずアルファベットの52文字または数値0から9の何れかにマッチ |
[a-zA-Z0-9-] | 大文字/小文字問わずアルファベットの52文字または数値0から9またはハイフンの何れかにマッチ |
[a-zA-Z0-9_] | 大文字/小文字問わずアルファベットの52文字または数値0から9またはアンダースコアの何れかにマッチ |
尚、メタ文字を併用すると更に細やかな指定が可能になります。
例:[^7][^a-d]/ブラケット内先頭がキャレット^の場合、否定(~以外) |
また、範囲によっては特殊なエスケープ文字を実質略記として利用可能です。
文字クラス | 略記 | 意味 |
---|---|---|
[a-zA-Z0-9_] | \w | 単語の構成文字にマッチ |
[^a-zA-Z0-9_] | \W | 単語の構成文字以外にマッチ |
[ \r\t\n\f] | \s | 空白文字(スペース・復帰文字・タブ・改行文字・ラインフィード)にマッチ |
[^ \r\t\n\f] | \S | 空白文字以外にマッチ |
[0-9] | \d | 数字にマッチ |
[^0-9] | \D | 数字以外にマッチ |
[あ-ん],[ア-ン],[ア-ン]
尚、ひらがな、カタカナといった全角文字、また半角カナの範囲指定をできる場合もありますが、日本語など多バイト文字を扱う際には、別途モジュールを利用したり、文字コード[utf-8,sjis,eucjp...etc.]に合致した16進表現を利用しないとうまくいかないケースや文字もあります。
POSIXとは互換性を高める目的でIEEEがUNIX OSとして最低限備えるべき機能として規定した規格であり、POSIX文字クラスとは、そのPOSIXに準拠した文字クラスを指します。
尚、「意味」に*を付加した文字クラスは仕様上注釈が付記されていますがここでは省略します。
POSIX文字クラス | 意味 |
---|---|
例:[[:alpha:]]/2重ブラケットとコロンの内側に以下を記述 | |
alpha | 何らかのアルファベット文字"[A-Za-z]" |
alnum | 何らかのアルファベット文字"[A-Za-z0-9]" |
ascii | ASCII文字セットにある何らかの文字 |
blank | GNU拡張、空白や水平タブ"\t" |
cntrl | 何らかの制御文字* |
digit | 何らかの十進数値"[0-9]" "\d"と同等 |
graph | 空白を除く何らかの印刷可能文字* |
lower | 何らかの小文字"[a-z]" |
空白を含む何らかの印刷可能文字* | |
punct | "word"文字を除く何らかのグラフィカル文字* |
space | 何らかのホワイトスペース文字(タブや空白) "\s" と垂直タブ"\cK" |
upper | 何らかの大文字"[A-Z]" |
word | Perl拡張"[A-Za-z0-9_]"/"\w"と同等 |
xdigit | 何らかの16進数数値"[0-9a-fA-F]" |