はじめに:正規表現を「実務で使ってみた」その次の話
前回の記事では、InDesignの検索・置換で使える正規表現について、「難しいことはさておき、まずは実務で助かる使い方」をまとめました。
今回はその続きとして、前回より少し踏み込んだ、先読み・後読み・否定・グループ化といったパターンを整理してみました。
このあたりは難しいので、頭が「???」となることもありますが、少しずつ紐解いていき、「あの場面に使えそう!」というヒラメキに繋がったら嬉しいです。
InDesignで役立つ正規表現:先読み・後読み・否定・グループ化
「特定の文字列の後ろに続く文字が○○である場合だけ検索したい」時に使います。
ただし、先読みでは「確認するだけ」で実際にその文字列を選択はしません。
例:TACT(?=SYSTEM)
→ 「TACT」の後ろに「SYSTEM」が続いている場合だけ「TACT」を検索。
結果:「TACTSYSTEM」の中の「TACT」だけが検索対象になります。
サンプル1:単位(kg / mm / cm)の直前の数字だけを選択
仕様表などで「単位はそのまま、数字だけスタイルを変えたい」といった場面に。
サンプル2:特定パターンのA1だけを処理したい
「後ろに A1 / AB / 2C / D3 / 4E / 5F のいずれかが続く A1 を見つける」という意味になります。
カタログの品番変更の際、「この組み合わせの最初のA1だけを新品番に変更したい!」という時に役立ちました。
「特定の文字列の前に○○がある場合だけ検索したい」時に使います。
ただし、後読みでは「確認するだけ」でその文字列を選択しません。
例:(?<=TACT)SYSTEM
→ 「SYSTEM」の前に「TACT」がある場合だけ「SYSTEM」を検索。
結果:「TACTSYSTEM」の中の「SYSTEM」だけが検索対象になります。
サンプル1:「¥」の後ろに続く金額だけを選択
金額部分だけ文字を大きくしたいなどの場面で便利です。
サンプル2:特定コードの前にあるC1だけ拾う(先読み併用)
「直前が 02 / 03 / 04 / 05 / FK / JN / LS のいずれかで、かつ直後が「-」の C1 だけを検索」という意味になります。
これもカタログの品番変更の際に、「この組み合わせの途中のC1だけを変更したい!」という時に役立ちました。
「特定の条件を満たさない場合だけ検索したい」時に使います。
特定の文字列の直前または直後に「指定したパターンがない」場合を確認します。
以下のように考えるとわかりやすいです。
・否定先読み (?!◯◯)
「後ろに◯◯がない場合だけ検索する」
例:TACT(?!Creates)
→ 「TACT」の後ろに「Creates」がない場合だけ検索。
結果:TACTSYSTEM → 一致する / TACTCreates → 一致しない
・否定後読み (?<!◯◯)
「前に◯◯がない場合だけ検索する」
例:(?<!TACT)Creates
→ 「Creates」の前に「TACT」がない場合だけ検索。
結果:HelloCreates → 一致する / TACTCreates → 一致しない
サンプル1:特定の文字列を含んでいない行を探す
「.epsを含む行だけを残す」という作業をやることがあるので、その時に大活躍。
サンプル2:直前が英字ではないmgだけ拾う
「5mg」にはマッチしますが、「img」にはマッチしないので、単位としてのmgだけを処理したいときに。
「複数の部分をまとめて扱いたい」「特定の部分を抽出したい」時に使います。
丸括弧 ( ) を使って、正規表現の一部をグループ化します。
グループ化した部分を後から参照したり、置換時に利用することができます。
例:(TACT)(SYSTEM)
※ 「TACT」と「SYSTEM」をそれぞれグループ化。
→$1(グループ1)は TACT / $2(グループ2)は SYSTEM
サンプル1:数字と単位の間にスペースを入れる
置換で$1と$2の間にスペースを入れると、検索でグループ分けしたところにスペースが入ります。
原稿にはスペースが入っていないけど、カタログルールで数字と単位の間にスペースを入れることが決まっている時に便利。
サンプル2:改行を含む2行を検索して一部を変更
1行目が「グレー」、2行目が「(ライト)」という文字列の「(ライト)」を「(ダーク)」に変更するサンプルです。
このように置換すれば、カタログ改訂で色名の一部が変わる時に、改行が入ってても一括で変更できます。
まとめ
正規表現を絶賛勉強中のわたしは、ここまでまとめるだけで息切れです。
特に否定が難しいですね…。
しかし、あらためてこうして明文化していたら、ふと気づいたんです。
「この前やったあの案件のあの作業って、これを応用した正規表現でできるんじゃない…?」
これこそ、前回自分で言っていた「なんとなく手作業でやっている修正」なような。
実現すれば、単調だけどちょっとだけ手間のかかるあの作業が、とっても効率良くできるようになるはず!
さっそくChatGPTに相談してみましょう。いいヒントをくれる気がします。
相談過程や結果は長くなりそうなので、続きは「正規表現って便利! InDesign作業がグッとラクになる正規表現の使い方3」にまとめます。
そちらもぜひご覧ください。



