Perlの正規表現
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/13 20:23 UTC 版)
PerlはPOSIXの拡張正規表現さえも上回る豊富な文法を持っている。その例として、POSIXとは異なり、Perlの正規表現には「非欲張り量指定子」がある。標準の「*」は、例えば正規表現「a.*b」の「.*」はできるだけ長い文字列にマッチしようとする。このふるまいを「貪欲」という。たとえば文字列「a bad dab」にマッチさせると、全体にマッチする。これに対し、Perlでは使うことができる正規表現「a.*?b」の「.*?」は、マッチするのであれば、できるだけ短い文字列にマッチする。たとえば文字列「a bad dab」に対して「a b」にだけマッチする。これを「非欲張り量指定子」と言う。 また、Perlには以下の定義済み文字クラスがある。 メタ文字マッチする対象\d アラビア数字、つまり「[0-9]」 \D アラビア数字以外の文字、つまり「[^\d]」 \w アルファベット、アラビア数字またはアンダーバー、つまり「[a-zA-Z_0-9]」(ロケールに依存し、例えばウムラウト付き文字などの扱いが変わる) \W アルファベット、数字やアンダーバー以外の文字、つまり「[^\w]」 \s 空白文字、つまり大抵の制御文字クラス ASCII文字集合のフォームフィード文字、ラインフィード文字、キャリッジリターン文字、水平タブ文字、垂直タブ文字[どこ?] \S 空白文字以外の文字、つまり、[^\s] すぐれた機能をもつPerlの拡張正規表現は、多くのプログラミング言語やソフトウェアで採りいれられている。例えば、JavaのPatternクラス、Python、Rubyなどがそうである。しかし、これらがPerlの正規表現と完全に互換である訳ではない。また、Perl Compatible Regular Expressions (PCRE) と呼ばれる汎用の正規表現ライブラリはアプリケーションに組み込まれ、Perlの正規表現とほぼ互換の機能を提供する。
※この「Perlの正規表現」の解説は、「正規表現」の解説の一部です。
「Perlの正規表現」を含む「正規表現」の記事については、「正規表現」の概要を参照ください。
- Perlの正規表現のページへのリンク