気の向くままに辿る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 文字クラス

 文字クラスとは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 文字クラス

 POSIXとは互換性を高める目的でIEEEがUNIX OSとして最低限備えるべき機能として規定した規格であり、POSIX文字クラスとは、そのPOSIXに準拠した文字クラスを指します。

 尚、「意味」に*を付加した文字クラスは仕様上注釈が付記されていますがここでは省略します。

POSIX文字クラス意味
例:[[:alpha:]]/2重ブラケットとコロンの内側に以下を記述
alpha何らかのアルファベット文字"[A-Za-z]"
alnum何らかのアルファベット文字"[A-Za-z0-9]"
asciiASCII文字セットにある何らかの文字
blankGNU拡張、空白や水平タブ"\t"
cntrl何らかの制御文字*
digit何らかの十進数値"[0-9]" "\d"と同等
graph空白を除く何らかの印刷可能文字*
lower何らかの小文字"[a-z]"
print空白を含む何らかの印刷可能文字*
punct"word"文字を除く何らかのグラフィカル文字*
space何らかのホワイトスペース文字(タブや空白) "\s" と垂直タブ"\cK"
upper何らかの大文字"[A-Z]"
wordPerl拡張"[A-Za-z0-9_]"/"\w"と同等
xdigit何らかの16進数数値"[0-9a-fA-F]"

ホーム前へ次へ