九天社の跡地です…
2001.8.29-2008.6.10


Webプログラマのための正規表現実践のツボ

 表紙

こんなことデキちゃいます!

・日付の区切り文字を
 マイナス(-)からスラッシュ(/)に変更する
・メールアドレスが正しいかどうか簡易的に判定する
・CSVファイルを固定長項目ファイルに変換する

正規表現を使えばとっても簡単。

正規表現の基礎から実践的な活用までを
perlを使って体系的に学習できる1冊



※在庫があれば上記サイトで
 入手できます。

[著]高橋 良明
[監]

[価格]2,940 円(税込)
[判型]A5判/288頁
[初版]2005/04/11 
[ISBN]4-86167-045-4

 本書について

 ブロードバンド時代を迎えた現在、さまざまな情報がとても簡単に入手できるようになりました。しかし、入手した膨大な情報から、必要なデータをいかにして取捨選択するかが、以前にも増して重要になっています。検索に関しては、文字列(キーワード)を直接指定する方法がもっとも一般的ですが、正規表現を使うことで、強力かつ柔軟な検索を行なうことができます。

 「正規表現」は、文字列の並びを「式」として表現したもので、検索したい文字列をテキストデータから的確に探し出すことができます。ただ、一度でも正規表現を見たことがある人は、「文字化け」や「呪文」のような記号が羅列されていて、プログラム言語以上にチンプンカンブンに思えたのではないでようか。しかし、正規表現は、検索したい文字列に隠れている規則性(パターン)を記号(メタキャラクタ)に置き換えて指定しただけのものなので、考えかたを理解すればそれほどとっつきにくいものではありません。

 本書は、正規表現を使う初心者や入門者のかたが、正規表現を一段ずつ組み立てていくことを目標に制作しました。正規表現はさまざまなプログラム言語やツール、エディタなどで利用できますが、本書では強力な正規表現の機能を持っているPerl(Windows版のActivePerl)を題材にしています。第1章では、正規表現の基礎として、Perlで使用できるメタキャラクタ(正規表現で特別な意味を持つ文字)のリファレンスと基本的な使いかたを解説しています。また、テキストファイルから文字列を検索したり、置換したりするスクリプトに加えて、Perlで日本語を扱うための基本的なスクリプトも併せて紹介しています。第2章では、テキストファイルから文字列を検索したり、置換したりするための正規表現のサンプル集を、Perlのスクリプトとして紹介しています。正規表現については、1段階ずつメタキャラクタを追加していくことで、正規表現の考えかたが理解できるように、詳細に解説を心がけました。

 正規表現は、さまざまなプログラム言語、エディタ、ツールなどで使用することができます。仕様に多少の違いはあるものの、ひとつの正規表現を習得しておけばPerl以外でも利用することができます。

 正規表現はとても奥が深いものですが、本書が正規表現を学ぶかたがたの一助になれれば著者望外の喜びです。

平成17年弥生
高橋良明

 サンプルプログラム

本書で使用しているサンプルプログラムを公開しています。

>>「正規表現 実践のツボ」 実践サンプル文例集 ダウンロード(52kb)

 目次

Chapter 1 正規表現の基礎知識

Section1 正規表現とは
Section2 メタキャラクタ
Section3 Perlで使用できるメタキャラクタ
Section4 基本のメタキャラクタ(1)エスケープ文字 ¥
Section5 基本のメタキャラクタ(2)任意の1文字 .
Section6 基本のメタキャラクタ(3)文字クラス []
Section7 基本のメタキャラクタ(4)選択 |
Section8 基本のメタキャラクタ(5)グループ化 ()
Section9 基本のメタキャラクタ(6)繰り返し * + ? {}
Section10 基本のメタキャラクタ(7)位置の指定 ^ $ ¥A ¥Z ¥z ¥b ¥B ¥G
Section11 Perlの拡張正規表現
Section12 メタキャラクタの優先順位
Section13 変数
Section14 リテラル値
Section15 Perlの演算子
Section16 スクリプトの制御
Section17 日本語の処理と文字コード
Section18 ASCII文字コード表
Section19 スクリプトのひな形1〜テキストファイルの読み込みと書き出し
Section20 スクリプトのひな形2〜日本語のエンコードとデコード

Chapter 2 正規表現文例集

Sample1 改行文字だけの行にマッチさせる
Sample2 空白文字だけ/タブの行にマッチさせる
Sample3 タブまたは空白文字のみの行数をカウントする
Sample4 タブを空白文字に置換する
Sample5 改行文字を実行環境に即した改行文字に置換する
Sample6 英単語とマッチさせる
Sample7 大文字/小文字だけで構成されている単語とマッチさせる
Sample8 英単語のすべての小文字←→大文字を変換する
Sample9 先頭のみ大文字の単語とマッチさせる
Sample10 大文字/小文字に関係なく指定した単語とマッチさせる
Sample11 日本語と英語の混在する文から英単語とマッチさせる
Sample12 漢字または漢字以外の文字列にマッチさせる
Sample13 ひらがな/カタカナにマッチさせる
Sample14 指定した文字列(英語/日本語)で始まる行にマッチさせる
Sample15 空白文字(半角/全角)で始まる行にマッチさせる
Sample16 全角の空白文字を半角の空白文字に置換する
Sample17 指定した文字列で終わる行にマッチさせる
Sample18 行末のピリオドを句点に置換する
Sample19 指定した複数の文字列のいずれかにマッチさせる
Sample20 特定の文字列が直前にある/ない文字列にマッチさせる
Sample21 同じ文字がn個以上連続する行にマッチさせる
Sample22 改行文字を削除する/付加する
Sample23 任意の同じ文字が連続する箇所にマッチさせる
Sample24 指定文字が連続する箇所を1文字にする
Sample25 「(株)」を「株式会社」に置換する
Sample26 日本語/英字を含む行を抽出する
Sample27 都道府県名を抽出する/取り除く
Sample28 市外局番と市内局番の桁数を変更する
Sample29 カタカナ語の末尾の長音(ー)を削除する/付加する
Sample30 引用符('や")やカッコ(「」や『』)の中の文字列をマッチさせる
Sample31 指定した文字数で改行させる
Sample32 行頭禁則を使って指定した文字数で改行させる
Sample33 行末禁則を使って指定した文字数で改行させる
Sample34 指定した文字数で改行して行頭に「>」を挿入する
Sample35 「YYYY-MM-DD」形式や「YYYY/MM/DD」形式の日付にマッチさせる
Sample36 月と日の値を検査しながら日付データにマッチさせる
Sample37 英語形式の日付にマッチさせる
Sample38 和暦の日付データにマッチさせる
Sample39 日付データから年・月・日に分割して取り出す
Sample40 日付の区切り文字をマイナス(-)←→スラッシュ(/)に変更する
Sample41 日付の区切り文字を年・月・日に変更して十の位を削除する
Sample42 日付データを和暦に変換する
Sample43 「HH:MM:SS」形式や「**h**m**s」形式の時刻データにマッチさせる
Sample44 値を検査して「HH:MM:SS」形式の時刻にマッチさせる
Sample45 「HH時MM分SS秒」形式の時刻データにマッチさせる
Sample46 日付データをもとに満年齢を求める
Sample47 コンマなし/コンマありの整数にマッチさせる
Sample48 指定した桁数以上/以下の整数にマッチさせる
Sample49 少数値にマッチさせる
Sample50 通貨にマッチさせる
Sample51 負符号(-▲)を置換する
Sample52 パーセント表記にマッチさせる
Sample53 全角の数字・コンマ・小数点・符号を半角に置換する
Sample54 位取りのコンマを削除する
Sample55 CSVファイルの二重引用符(")を削除する
Sample56 CSVファイルを固定長項目ファイルに変換する
Sample57 メールアドレスにマッチさせる

Appendix

Perlとダウンロードとインストール
ActivePerlの使い方