euc-jp として不正なキャラクタを削除する

日本語でないメールを無理矢理 euc-jp として表示しようとすると当然文字化けが起こるのだけど、その中に euc-jp ではあり得ないキャラクタが入っているとその続きの表示に影響が出る場合がある。不正なキャラクタのみを簡単に削除する方法はないかとあれこれ試してみていたのだけど、試行錯誤の結果

s/\G)((?:$euc_jp)*)([\x80-\xFF]((?:$euc_jp)*))(?/$1$3/og;

という正規表現で削除することができるようになった($euc_jp は先に定義しておく)。(?:...) というのはなんなんだろうと思っていたのだけど、これはあとで $1 とかでマッチ部分参照するときに対象外にする、ということらしい。括弧が多くなるとどれが何番目なのかわかりにくくなるからそういうことができるようになっているということなのかな。
もっとうまい方法があるような気もするけど、意外とすっきりできたのでこれでよしとするか。