DTP作業者にとっての難易度 ★★★☆☆(3)
横組みの文章中で、疑問符や感嘆符の後に過不足なく半角スペース(欧文スペース)を入力するというケースを考えます。
このような時、単純に「?や!の後に半角スペースを加える」という検索/置換を実行すると、不要な箇所にまで半角スペースを発生させてしまうことになります。

※『検索文字列』の「[?!]」は「?もしくは!」という意味です。また『置換文字列』は「$0〈半角スペース〉」となっています。「$0」は、検索した文字をそのまま使用するという意味です。
※文章中の疑問符「?」はすべて全角記号です。
適切な処理をおこなうためには、下図のように設定すると良いでしょう。

『検索文字列』は「([?!]+)~(?(?![?!~(〈半角スペース〉\r」』]〉)”’〕}》】])」となっています。
「[?!]+」は「?もしくは!が1つ以上連続する」という意味です。後で置換時に利用するために半角括弧で囲んでいます。
「~(?」の「~(」は全角スペース、「?」は「あってもなくてもいい」という意味です。
「(?![……])」は直後の文字に関する条件です。「[ ]内のいずれの文字でもないこと」という条件を示しています。
『置換文字列』は「$1〈半角スペース〉」とします。「$1」は『検索文字列』の最初の半角括弧内の文字をそのまま利用するという意味です。
上記設定で検索/置換を実行すると、以下のように適切な置換が実行されます。
このような検索/置換は複雑に見えますが、慣れてしまえばそう難しいものではありません。ただ、条件の設定漏れなどの可能性もありますので置換箇所には蛍光ペン風の表示を施す(この回とこの回を参照ください)など、後で確認しやすいよう工夫しておくと良いでしょう。