Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2008-06-03

[][][]キャプションで最後の「。」を削除する。

キャプションなどで最後の「。」を削除するのは、いままでは目で確認するしかありませんでした。

独立したテキストフレームならばこのテクニックが使えます。要するに、ストーリーの最後が「。」で終わっていれば取るということです。検索形式に段落スタイルを指定することも忘れずに。

▼こんなテキストがあったとして(左は最後が改行で終わっている。右は「。」で終わっている。)

f:id:seuzo:20080603145706p:image

正規表現ダイアログはこんな感じ

検索フィールド:(.)。\Z

置換フィールド:$1

検索形式:文字スタイル:キャプション

f:id:seuzo:20080603145707p:image

▼置換結果

f:id:seuzo:20080603145708p:image

[][][][]【番外編】ルビを付加する

まあこれはInDesignっていうよりも、エディタで正規表現置換をしてInDesignタグを作るといった方がただしい。

しかし、こうしてさまざまなアプリケーションで正規表現が使用できることこそ、正規表現の大きな魅力だろう。

こうした手だてがなければ、有料のプラグインを使うよりほかにないのだから。

▼こんな感じのテキスト。「親文字《おや も じ》」というフォーマット。

出典は青空文庫。よりわかりやすくするためにルビを多めにしてみました。かつ、モノルビのための前処理として「 」を挿入しました。

f:id:seuzo:20080603170133p:image

正規表現(今回はmiを使用)

検索フィールド:|?([一-龠]+)《(.+?)》

置換フィールド:<cRuby:1><cRubyString:$2>$1<cRuby:><cRubyString:>

f:id:seuzo:20080603170134p:image

▼置換結果

f:id:seuzo:20080603170135p:image

InDesignタグのためにヘッダ「<SJIS-MAC>」を挿入し(InDesignタグはSJIS以外は相性がわるいためやむなく)、別名で保存。

f:id:seuzo:20080603170136p:image

▼流し込んだ状態

f:id:seuzo:20080603170137p:image

2008-05-31

[][][]重複行を削除する。

そんなのテキスト状態でuniq使え、ってつっこみはおいておいて...^^

▼こんなテキストがあったとして(ないと思うけど、仮にあったとしてね、サンプルなんだから...)

f:id:seuzo:20080531190721p:image

正規表現ダイアログはこんな感じ

検索フィールド:(^[^\r]+\r)\1+

置換フィールド:$1

f:id:seuzo:20080531190722p:image

▼置換結果

f:id:seuzo:20080531190723p:image

[][][]空行を削除する。

こちらも「エディタでやっとけよ」なんて声も聞こえてきそうだけど、鑑みるにけっこう手動で消していたりしてた。

▼こんなテキストがあったとして

f:id:seuzo:20080531203746p:image

正規表現ダイアログはこんな感じ

検索フィールド:^\s*$\r

置換フィールド:

f:id:seuzo:20080531203748p:image

▼置換結果

f:id:seuzo:20080531203747p:image

[][][]二桁数字を半角字形にする。

以前、すこし紹介したけれど、活用例として縦組みの2桁数字でやってみた。

▼こんな感じの縦組みのテキスト

f:id:seuzo:20080531220854p:image

正規表現ダイアログはこんな感じ

検索フィールド:(?<![\.,])\b\d\d\b(?![\.,])

置換フィールド:

置換形式:+字形:等幅半角字形

f:id:seuzo:20080531220855p:image

▼置換結果

f:id:seuzo:20080531220856p:image

ちなみに

拙作の「num_glyph」を使うといろいろ選べてなお愉し。

http://www.seuzo.jp/st/scripts_InDesignCS3/index.html#num_glyph

2008-05-30

[][][](〜)内の文字サイズを小さくする。

括弧の中だけ文字サイズを小さくしたいっていうのはよくありがちなシチュエーション。

▼こんなテキスト

f:id:seuzo:20080530215447p:image

正規表現ダイアログはこんな感じ

検索フィールド:(.+?)

置換フィールド:

置換形式:文字スタイル:small

f:id:seuzo:20080530215448p:image

▼置換結果

f:id:seuzo:20080530215449p:image

▼ちなみに、括弧の文字サイズは変えずに中身だけを変えるには

検索フィールド:(?<=().+?(?=))

とすればよい。

f:id:seuzo:20080530215450p:image

[][][]★〜★で囲まれていたら太字にしたい。

こんなのもよくありがち。こちらの★は単なるマーキングなので、取りたいって場合。

▼こんなテキスト

f:id:seuzo:20080530230209p:image

正規表現ダイアログはこんな感じ

検索フィールド:★(.+?)★

置換フィールド:$1

置換形式:文字スタイル:bold

f:id:seuzo:20080530230210p:image

▼置換結果

f:id:seuzo:20080530230211p:image

[][][]図・表番号を太字にする。

こういうのもちゃんと説明しないとね。

▼こんなテキスト

f:id:seuzo:20080530235510p:image

正規表現ダイアログはこんな感じ

検索フィールド:[図表]\d+[\.-]?\d*

置換フィールド:

置換形式:文字スタイル:bold

f:id:seuzo:20080530235511p:image

▼置換結果

f:id:seuzo:20080530235512p:image

2008-05-29

[][][]電話番号の再フォーマット

電話番号はさまざまな書き方を許容している。そんなバラバラなフォーマットのものを手作業で直していたら単に時間のムダだろう。第一、こうした数字は間違えが許されない種類の情報だ。

▼たとえば、こんなテキストがあったとすると

f:id:seuzo:20080529211814p:image

正規表現ダイアログはこんな感じ

検索フィールド:(?i)(☎|電話|でんわ|tel\.?|phone\.?)[  ]*[((]?(\d+)[()()−-](\d+)[()()−-](\d+)

置換フィールド:Tel. $2-$3-$4

f:id:seuzo:20080529211815p:image

▼置換結果

f:id:seuzo:20080529211816p:image

2008-05-28

[][][]数字の位取り

一般的に正規表現で数字の位取りはできないとされている。ただしそれには「1度では」という条件付きだ。なんどか置換を実行すれば、数字の位取りは簡単にできる。15桁、999兆(日本の借金くらいかな)までなら4回だけ。それ以上だったとしても十分に実用的。

▼たとえば、こんなテキストに対して

f:id:seuzo:20080528142722p:image

正規表現ダイアログはこんな感じ

検索フィールド:(\d)((\d\d\d)+\b)

置換フィールド:$1,$2

f:id:seuzo:20080528135835p:image

▼5回目に検索を実行すると「もうおなかいっぱいです」

f:id:seuzo:20080528135836p:image

▼そして、置換結果。

f:id:seuzo:20080528142723p:image

[][][]マーキングマーキング済みのテキストに段落スタイルを適用する。

こういうのは、普段はタグ付きテキストで行っていた。たくさんあれば、まだタグの出番もあるのだけど、少しなら正規表現検索置換でもできるよっていう例。よくあるシチュエーション。

置換スタイルが設定してあると、置換フィールドが空文字でも実際には検索文字は削除されない。通常のテキスト検索で検索文字を表すワイルドカードがないための暫定処置なんだけど、正規表現「$0」が存在するんだからこの振る舞いは「正規表現検索置換」では単に不正な感じがしてしまう。

▼たとえば、こんな感じで流しっぱなしのテキスト。すでに段落スタイルは作成済み。

f:id:seuzo:20080528214601p:image

正規表現ダイアログはこんな感じ

検索フィールド:^●(.)

置換フィールド:$1

置換形式:段落スタイル:01_製品名

f:id:seuzo:20080528214602p:image

▼置換すると...

f:id:seuzo:20080528214603p:image

▼次の正規表現ダイアログはこんな感じ

検索フィールド:(.)●$

置換フィールド:$1

置換形式:段落スタイル:01_性能

f:id:seuzo:20080528214604p:image

▼置換すると...

f:id:seuzo:20080528214605p:image

▼価格の行の正規表現ダイアログはこんな感じ

検索フィールド:^[\d,]+円

置換フィールド:

置換形式:段落スタイル:01_性能

f:id:seuzo:20080528214606p:image

▼置換すると...

f:id:seuzo:20080528214607p:image

[][][]価格の数字のみに文字スタイルを適用する

数字の後に「円」が来るとき、価格の数字のみに文字スタイルを適用します。

▼まずはこんなテキストフレームがあったとして。

f:id:seuzo:20080528215740p:image

正規表現ダイアログはこんな感じ

検索フィールド:[\d,]+(?=円)

置換フィールド:

置換形式:文字スタイル:価格

f:id:seuzo:20080528215741p:image

▼置換結果

f:id:seuzo:20080528215742p:image

(追記:2010-03-25T14:38:17+0900)数字の位取りについては、こちらの方が簡単です。

数字を3桁づつカンマ区切りにする - 名もないテクノ手