入門 正規表現
―検索・置換・テキスト処理に強くなる!

[表紙]入門 正規表現 ―検索・置換・テキスト処理に強くなる!

紙版発売

A5判/160ページ

定価2,178円(本体1,980円+税10%)

ISBN 978-4-7741-3404-8

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

検索,置換といったテキスト処理に役立つ「正規表現」の基礎を解説します。それだけでなく,プログラミングや日常の文字処理にも直ぐに応用できるコツをこっそり教えます。

こんな方におすすめ

  • 正規表現を今度こそマスターしたい方,もしくは初めてはじめる方

著者の一言

本書は,正規表現を使いはじめてまだ日の浅い人のために,正規表現というシステムの《基本構造》と《重要な細部》を,スッキリ明快に把握し,理解していただくために書きました。全体の構造(文字指定+量指定+位置指定+特殊機能)を見通し良く理解し,またいくつかの,最初は見えにくい落とし穴(欲張り/控えめ/独占マッチの使い分け,怠け者のOR演算子に注意,置換と捕捉グループの利用,前方参照を後方に置く使い方,など)を知っていれば,正規表現を自信と確信をもって使えるようになります。

本書のサンプル

本書の一部ページを,PDFで確認することができます。

本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。

サンプル画像1

サンプル画像2

目次

第0章 正規表現って,どうゆう意味?――それは言葉の規則性,パターンを表します

  • 0.1 正規表現をご存じですか
  • 0.2 正規表現を試してみませんか
  • コラム「正規表現とUNIXオペレーティングシステム」

第1章 正規表現の部品を理解しよう――主役は文字指定と量指定

  • 1.1 正規表現の部品とは何か
  • コラム「正規表現は万能薬ではない」

第2章 文字を指定する正規表現――具体的な文字と抽象的な指定

  • 2.1 具体的な文字を指定する
  • 2.2 一般的抽象的に文字を指定する

第3章 量を指定する正規表現――"満腹"と"腹八分"の違いが重要

  • 3.1 ゼロ個以上いくつでも
  • 3.2 ゼロ個または1個
  • 3.3 1個以上いくつでも
  • 3.4 具体的に数を指定する
  • コラム「雑談エピソード..正規表現はゼロと否定が苦手」
  • 3.5 量指定のおさらい
  • 3.6 重要「欲張りマッチでだめなら控えめマッチを使う」
  • コラム「特殊な話題..独占的なマッチング」

第4章 位置を指定する正規表現――対象テキストの形や構造をつかむ

  • 4.1 行頭と行末を指定する部品とはなにか
  • 4.2 単語境界とはなにか
  • コラム 要注意「位置指定に関わる部分は取り出される文字列に含まれない!」
  • 4.3 入力の始まりと終わり
  • 4.4 前にマッチした部分の直後
  • 4.5 前方参照と後方参照――その"ポジティブ(ある)"と"ネガティブ(ない)"
    • 前方参照(lookahead)
    • 後方参照(lookbehind)
  • コラム「あまり重要でない雑談..前方参照の2つの書き方?」
  • 4.6 マッチした文字列の"部分"を指定――捕捉グループ(capturing group)
  • 4.7 捕捉グループの残念な点
  • 4.8 位置指定のおさらい

第5章 特殊な指定をする正規表現――便利な小道具の数々

  • 5.1 AまたはB(正規表現のOR演算子)
  • 5.2 OR演算は,最初にマッチを見つけたら後は見ない!要注意!――そして控えめなマッチングも!
    • 似たもの兄弟――控えめなマッチング
  • コラム「かなりくだらない雑談 正規表現にAND演算子はない」
  • 5.3 そのままの引用
  • 5.4 正規表現のコンフィギュレーション(構成指定)
  • 5.5 大文字小文字の区別
  • 5.6 ドットと改行文字
  • 5.7 改行文字の前後を^や$で指定する
  • 5.8 スペースとコメントの扱い
  • 5.9 そのほかの構成オプション
  • 5.10 構成オプションの書き方の注意点
  • 5.11 かっこのさまざまな意味
    • 捕捉グループと単なるかっこ
    • アトミックグループ
    • そのほかのかっこのおさらい

第6章 正規表現を何のために使う?――検索と編集が二大目的

  • 6.1 検索――見つける,取り出す
  • 6.2 目的に合った正しい書き方
  • 6.3 より効率的な使い方
    • なるべく具体的に
  • コラム「正規表現の効率性の例」
  • 6.4 正規表現で何もかもやろうとするな
    • 正規表現は入れ子構造/再帰が苦手
    • たった1個の巨大な正規表現で勝負するな!
    • 入力を料理してから正規表現に食べさせる
    • 汚い文書をそのまま扱う正規表現を考えるな
    • 自作のプログラムから正規表現を使おう
  • 6.5 編集――置換,削除など
  • コラム「フルマッチはやや気難しい」

第7章 自作のプログラムから正規表現を使う

  • 7.1 Javaを使ってみませんか
  • 7.2 Stringクラスの便利なメソッド
  • コラム「split()の機能を手書きしてみると……」
  • 7.3 複数のファイルに対して一気に処理
  • コラム「プログラミング上の注意!」
  • 7.4 もうちょっと高度な正規表現プログラミング
  • コラム【Matcherの重要なメソッド】
  • コラム「オーバラッピング・マッチ」

第8章 正規表現アラカルト

  • 8.1 多重括弧(2段まで)
  • 8.2 行が~~で終わっている/終わっていない
  • 8.3 事務的資料からリンクを作る
  • 8.4 パンくずからCSVレコードを作る
  • 8.5 HTML文書から本文テキストを取り出す
  • 8.6 キーワードを取り出す/置換する
  • 8.7 すべてのリンクを見つける
  • 8.8 区切り文字を見つける
  • 8.9 改行を
    に置換する
  • 8.10 日付を表す正しい正規表現
  • 8.11 文字列の"否定"
  • 8.12 xml文書の要素を見つける

おわりに――bonus track

  • 正規表現トラブルシューティング
  • 正規表現のトラブルと主な原因[1]
    • [1-a]欲張りマッチと控えめマッチの使い分け
    • [1-b]独占マッチの有効利用
    • [1-c]OR演算子'|',量指定*,そして控えめマッチの誤用
    • [1-d](?m),(?s),(?i)などの指定し忘れ
    • [1-e]余計なスペースはないか?
  • 正規表現のトラブルと主な原因[2]
    • [2-a]正規表現の機能文字に対するバックスラッシュ
    • [2-b]置換文字列中のドル記号'$'のエスケープ
    • [2-c]Javaの文字列中でのバックスラッシュの書き方
  • 正規表現のトラブルと主な原因[3]
    • [3-a]OR演算子'|'の使いすぎ?
    • [3-b]独占マッチの有効利用
    • [3-c]*や?の使いすぎ
  • 正規表現のトラブルと主な原因[4]
    • [4-a]捕捉グループとのマッチが複数並んでいる
    • [4-b]複数の捕捉グループマッチを個別に取り出す

著者プロフィール

岩谷宏(いわたにひろし)

1942年京城市(韓国)生まれ。京都大学仏文科卒業。卒業後パンニュース社にて英文と仏文の翻訳業務に携わる。音楽雑誌「ロッキングオン」の創刊にかかわる。

 『ビートルズ訳詞集』(シンコーミュージック社)。『ラジカルなプログラミング入門』(筑摩書房)。『C++の設計と進化』『Javaネットワークプログラミングの真髄』(訳書)(ソフトバンククリエイティブ)。『JavaServer Faces完全ガイド』『軽快なJava』(訳書)(オライリージャパン)。『ぼくらに英語が分からない本当の理由』(オンブック)。『ひとつ上をゆくJavaの教科書』(当社刊)。その他,著書・訳書多数。

著書