正規表現の「先読み/後読み」に関して

こちら(InDesignの段落スタイルで箇条書きでコロンの前までを太字にする)の記事で尾花さんからアドバイスいただき、「やらなきゃなー」と思っていた正規表現の「先読み/後読み」についてまとめてみました。

「InDesign CS3 正規表現一覧」

「InDesign 正規表現」で検索すると、市川せうぞーさんが2008年に公開された一覧表が出て来ます。残念ながらブログの方は非公開になってしまいましたが、こちらのドキュメントは、まだ閲覧することができます。

「先読み/後読み」部分には次のように書いてあります。

正規表現意味用例・備考
(?= )肯定先読みたとえば、正規表現「東京都(?=港区)」と書いた時、「東京都港区」の中の「東京都」にはマッチするが、「東京都練馬区」や「東京都杉並区」には目もくれない。
(?! )否定先読み「たとえば、正規表現東京都(?!港区)」と書いた時、「東京都港区」にだけマッチしない。「東京都練馬区」や「東京都杉並区」の中の「東京都」にはマッチする。
(?<= )肯定後読みたとえば、正規表現「(?<=東京都)港区」と書いた時、「東京都港区」の中の「港区」にはマッチするが、「名古屋市港区」には目もくれない。
(?<! )否定後読みたとえば、正規表現「(?<!東京都)港区」と書いた時、「東京都港区」にだけマッチしない。「名古屋市港区」や「大阪市港区」の中の「港区」にはマッチする。

こちらをまとめ直してみました。

別のまとめ方をするとこうですね。

Twitterに挙げていたところ、なんでやねんDTP/おぢんさんに「検索じゃなくて、ヒットとかマッチだよね」など、アドバイスいただいてブラッシュアップしました。いつもご指摘ありがとうざいます。

InDesignでの入力支援

InDesignには、メタ文字を入力するための入力支援機能があります。

こちらの記事に別途まとめました。

「先読み/後読み」という用語に関して

「先読み/後読み」という用語が、ややこしいなーと思っていたところ、「chalcedony_htnの日記」さんの次の記事で

「後読み」のことを「戻り読み」ともいいます。

と、ここで*せうぞー*さん!

そして、そして、こちらの図(お借りします!)が素晴らしい。

後読みの「(?<= )」や「(?<! )」の「<」は、「マッチ部分から戻る矢印」と考えるとよさそう。

ともかく、自分には、英語の「look-ahead」「look-behind」がしっくり来ます。

その他

こちらの記事も参考になります。

その他