正規表現(1) 基礎知識

Perl正規表現を勉強します。実のところ、僕は既に正規表現を他の言語で勉強したので、知っています。(^_^) でも、基礎知識を復習します。

正規表現」(regular expression)とは、文字列の中に「パターン」を見出して、文字列処理を抽象化できる、とても便利な機能です。主に文字列の中からサブ文字列を検索する時や、サブ文字列を別の文字列へ置換する時に使われます。エディタの検索機能としてよく見かける事ができます。
例えば

The first OS I used was Windows 95. But, I wasn't patient enough to keep using it. So I switched to Windows 98 as soon as released by Microsoft. Via Windows 2000, I'm eventually using Windows XP now, and I've been looking forward to Windows Vista.

という英文があったとして、この文に出てくる「Windows」を調べて、以下のように出力したいとします。

Windows 95
Windows 98
Windows 2000
Windows XP
Windows Vista

こんな時、普通の検索と文字列処理で済ませようとすると、まず「Windows」を検索して、その次の単語を substr (文字列の一部を取得する関数)などで切り出して、有効な OS かどうか調べて……と大変です。
正規表現を使って以下のように書くと、この検索が簡単にできます。

Windows (3\.1|95|98|NT|Me|2000|XP|2003|Vista)

これは「Windows 」の後ろに「3.1」「95」「98」「NT」「Me」「2000」「XP」「2003」「Vista」のどれかがある所にマッチします(検索がひっかかります)。つまり「Windows 95」や「Windows XP」など、上に挙げたバージョンの物を全て一度に検索できてしまうわけです。

この例は、正規表現の便利さの一つの側面でしかありません。正規表現には様々な機能があり、それを網羅的に説明していると本が1冊書けてしまいます。(^_^;)
ぱるも日記では、正規表現自体の基本的な文法や機能については習得済みとして先を続けます。ただ、Perl スクリプト中に正規表現を使う場合、なるべく説明したいと思います。

以下、正規表現を勉強する際のウェブサイトなど。(正規表現には色々と方言がありますので、注意が必要です)

perldoc perlretut
(日本語訳) Perl正規表現チュートリアル。基礎の文法を勉強できます。:
perldoc perlreref
(日本語訳) Perl正規表現のリファレンス。早く調べたい時に。:
正規表現メモ - Perlで使用できる正規表現演算子
Perl で使える正規表現演算子の一覧。:
Rieu ちゃんの正規表現講座
正規表現を基礎を解説しています。:
Perl正規表現雑技
正規表現の応用。「正規表現不定方程式を解く」など面白いです。:

正規表現を解説している書籍だと、やはりオライリーの「詳説 正規表現」が定番のようですが、僕は持っていませんので、あまり無責任な事は書けません。(>_<;)

詳説 正規表現 第2版

詳説 正規表現 第2版

(もしオススメのウェブサイト・書籍があればゼヒ教えてください♪)