正規表現の「先読み/後読み」に関して
こちら(InDesignの段落スタイルで箇条書きでコロンの前までを太字にする)の記事で尾花さんからアドバイスいただき、「やらなきゃなー」と思っていた正規表現の「先読み/後読み」についてまとめてみました。
こんな感じでどうでしょう?(せうぞー師匠の教えが活きました! pic.twitter.com/tCwwkjNva3
— あかつき@おばな (@akatsuki_obana) June 9, 2019
「InDesign CS3 正規表現一覧」
「InDesign 正規表現」で検索すると、市川せうぞーさんが2008年に公開された一覧表が出て来ます。残念ながらブログの方は非公開になってしまいましたが、こちらのドキュメントは、まだ閲覧することができます。
「先読み/後読み」部分には次のように書いてあります。
正規表現 | 意味 | 用例・備考 |
---|---|---|
(?= ) | 肯定先読み | たとえば、正規表現「東京都(?=港区)」と書いた時、「東京都港区」の中の「東京都」にはマッチするが、「東京都練馬区」や「東京都杉並区」には目もくれない。 |
(?! ) | 否定先読み | 「たとえば、正規表現東京都(?!港区)」と書いた時、「東京都港区」にだけマッチしない。「東京都練馬区」や「東京都杉並区」の中の「東京都」にはマッチする。 |
(?<= ) | 肯定後読み | たとえば、正規表現「(?<=東京都)港区」と書いた時、「東京都港区」の中の「港区」にはマッチするが、「名古屋市港区」には目もくれない。 |
(?<! ) | 否定後読み | たとえば、正規表現「(?<!東京都)港区」と書いた時、「東京都港区」にだけマッチしない。「名古屋市港区」や「大阪市港区」の中の「港区」にはマッチする。 |
こちらをまとめ直してみました。
別のまとめ方をするとこうですね。
Twitterに挙げていたところ、なんでやねんDTP/おぢんさんに「検索じゃなくて、ヒットとかマッチだよね」など、アドバイスいただいてブラッシュアップしました。いつもご指摘ありがとうざいます。
InDesignでの入力支援
InDesignには、メタ文字を入力するための入力支援機能があります。
こちらの記事に別途まとめました。
「先読み/後読み」という用語に関して
「先読み/後読み」という用語が、ややこしいなーと思っていたところ、「chalcedony_htnの日記」さんの次の記事で
「後読み」のことを「戻り読み」ともいいます。
と、ここで*せうぞー*さん!
そして、そして、こちらの図(お借りします!)が素晴らしい。
後読みの「(?<= )」や「(?<! )」の「<」は、「マッチ部分から戻る矢印」と考えるとよさそう。
ともかく、自分には、英語の「look-ahead」「look-behind」がしっくり来ます。
その他
こちらの記事も参考になります。
その他