2013年05月19日

正規表現による置換の例……表記形式を変更する

DTP作業者にとっての難易度 ★★★☆☆(3)

私がDTP作業を担当した仕事で、文章中の「企業A」「企業B」……「企業Z」となっている箇所を、それぞれ「A社」「B社」……「Z社」という表記形式に変更してほしいという指示をいただいたことがありました(下図参照)。

0519-002.png


これを実現したい場合は下図のように設定します。

0519-001.png

『検索文字列』欄は「企業([A-Z])」となっています。「[A-Z]」は「AからZまでのいずれか1文字」という意味です。半角括弧で囲んでいるのは、置換時に使用するためです。
『置換文字列』欄は「$1社」となっています。何度かご説明したように「$1」は『検索文字列』内の1つめの半角括弧で囲まれた部分をそのまま使用する、という意味です。

上記設定で『すべて置換』を実行すると下図のようにすべての該当箇所が一気に置換できます。




もう1つ例を挙げておきましょう。

下図のように「xxxx/yy/zz」という表記を「xxxx年yy月zz日」という表記形式に置換します。この時、年月日の間にはタブを挿入します。また、月日の十の位が「0」の時は、その「0」を削除することにします。

0519-202.png


この場合、下図のように設定すれば良いでしょう。

0519-101.png

『検索文字列』欄は「(\d{4})/0?(\d+)/0?(\d+)」となっています。半角括弧で囲んでいるのは、いずれも置換時に使用する部分です。
最初の半角括弧内にある「\d{4}」の「\d」は数字、「{4}」は4つという意味です。つまり「数字が4つ連続する」ということになります。
「/」は置換後は使用しないので半角括弧で囲みません。
「0?」の「?」は「存在してもしなくても良い」という意味です。つまり「0が存在してもしなくても良い」ということになります。この部分も置換後は使用しないので半角括弧で囲む必要はありません。
2番目の半角括弧内「\d+」の「+」は「1つ以上存在する」という意味です。つまり「数字が1つ以上連続する」ということになります。1桁数字でも2桁数字でも構わないわけです。
あとは同様に考えれば良いので説明を省きます。
『置換文字列』欄は「$1年\t$2月\t$3日」となっています。このうち「$1」「$2」「$3」は、それぞれ『検索文字列』内の1つ目、2つ目、3つ目の半角括弧で囲まれた部分をそのまま使用する、という意味です。
また「\t」は「タブを挿入する」という意味です。

上記設定で『すべて置換』を実行すると下図のように表記形式を変更することができます。

posted by 照山裕爾 at 23:59| Comment(0) | TrackBack(0) | InDesign-検索/置換 | このブログの読者になる | 更新情報をチェックする

2013年05月18日

正規表現による検索/置換で段落スタイルを指定する

DTP作業者にとっての難易度 ★★☆☆☆(2)

《Microsoft Wordの段落スタイルをInDesignに反映する》では、Microsoft Wordで段落スタイルを設定しておくとInDesignの段落スタイルに反映できることをご紹介しました。
しかし作業環境によっては、編集者がテキストデータに段落スタイルを適用できないこともあります(たとえばテキストエディタを使用している場合など)。このような場合に便利な方法をご紹介したいと思います。

たとえばテキストデータでは大見出しにしたい段落の行頭に「◎」、小見出しにしたい段落の行頭に「■」を入力しておき、これをInDesignに読み込みます(下図・左)。正規表現による検索/置換で、これらの記号を削除すると同時に段落スタイルを適用し、下図・右の状態にすることができます。

0518-003.png


このためには、下図のように設定をおこないます(大見出しの例)。

0518-001.png

『検索文字列』の「^◎」は段落行頭「^」の直後が「◎」であること、という条件を示しています。
「(.+)」のうち「.」は任意の1文字という意味、「+」は1回以上の繰り返しという意味です。「なんらかの文字が1文字以上存在すること」というふうに考えていただければ結構です。半角括弧で囲んでいるのは、後ほど置換する時に使用するためです。

『置換文字列』は「$1」となっています。これは《特定の言い回しの部分だけを置換する……正規表現による置換》でもご説明したように『検索文字列』内の1つめの半角括弧で囲まれた部分をそのまま使用する、という意味です。今回は検索した文字列のうち「◎」を除く部分ということになります。

さらに『置換形式』欄では、適用したい段落スタイルを設定して『すべて置換』を実行します。



段落行頭に入力しておく記号は何でも構いませんが、本文中で使用する可能性の少ない記号を選ぶべきでしょう。
posted by 照山裕爾 at 12:04| Comment(0) | TrackBack(0) | InDesign-検索/置換 | このブログの読者になる | 更新情報をチェックする

2013年05月17日

正規表現による置換の活用例……「したがって」と「従って」

DTP作業者にとっての難易度 ★★★☆☆(3)

たとえば、下図のように文章の頭で使用する接続詞は仮名表記の「したがって」、文章の途中で使用する動詞は漢字表記の「従って」にしたいという場合、やはり正規表現による検索/置換をおこないます。

0517-103.png


従って→したがって


文章の頭で使用する接続詞を「したがって」とするためには下図のように設定します。

0517-101.png

『検索文字列』のうち「|」の左側は「^従って」となっています。この「^」は段落行頭を示します。つまり段落行頭に存在する「従って」を検索対象にする、という設定になっているわけです。
「|」の右側は「(?<=[、。])従って」となっています。この「(?<=[、。])」は、「従って」の直前の文字が読点「、」もしくは句点「。」であること、という条件を示します。

※「|」は複数の条件を設定する際に使用します。「または」という意味だと考えていただければ結構です。





したがって→従って


文章の途中で使用する動詞を「従って」とするためには下図のように設定します。

0517-102.png

『検索文字列』は「(?<=に)したが(?=[わいうえおっ])」となっています。「(?<=に)」は、「したが」の直前の文字が「に」であること、という条件を示します。「(?=[わいうえおっ])」は、直後の文字が「わ」「い」「う」「え」「お」「っ」のいずれかの文字であること、という条件を示します。

※「に従わない」「に従う」「に従えば」「に従おう」「に従って」といった活用に対応するためです。




※これらの他に「○○を従えて」や「○○が従わない場合」などの表現部分も対象にするためには少し設定を追加しなければなりませんが、ここでは省略しました。



サンプルデータはこちら《minimum0517.zip》です(CS4以降)。

【2016.7.14、2016.8.29追記→2016.9.23修正】

Adobeフォーラムで
^従って|(?<=[、。])従って
ではヒットしないものがあるとご指摘がありました。

当方で試した範囲ではInDesignCC2014(10.2.0.68)と2015(11.0.0.72)で
段落内の(句読点に続く)「従って」が検索対象となりませんでした。
理由はよく分かりませんが最初の「^」が「|」以降にも影響しているように思います。
これがInDesignが抱える問題なのか、
それとも正規表現の正常な挙動なのかはよく分かりません。

なお、順番を入れ替えて
(?<=[、。])従って|^従って
とすることで、この問題は回避できるようです。
(↑この部分、2016.8.29追記)


(?<=[\r。、])従って|^従って
とすることで、この問題は回避できるようです。
「従って」の直前が改行、句点、読点のケース、
もしくは「従って」が段落行頭のケース……という意味です。
posted by 照山裕爾 at 15:22| Comment(2) | TrackBack(0) | InDesign-検索/置換 | このブログの読者になる | 更新情報をチェックする