efaq: Working with unprintable characters
5.12 How do I search for, delete, or replace unprintable (eight-bit or control) characters?
===========================================================================================
To search for a single character that appears in the buffer as, for
example, ‘\237’, you can type ‘C-s C-q 2 3 7’. Searching for *all*
unprintable characters is best done with a regular expression (“regexp”)
search. The easiest regexp to use for the unprintable chars is the
complement of the regexp for the printable chars.
• Regexp for the printable chars: ‘[\t\n\r\f -~]’
• Regexp for the unprintable chars: ‘[^\t\n\r\f -~]’
To type these special characters in an interactive argument to
‘isearch-forward-regexp’ or ‘re-search-forward’, you need to use ‘C-q’.
(‘\t’, ‘\n’, ‘\r’, and ‘\f’ stand respectively for <TAB>, <LFD>, <RET>,
and ‘C-l’.) So, to search for unprintable characters using
‘re-search-forward’:
‘M-x re-search-forward <RET> [^ <TAB> C-q <LFD> C-q <RET> C-q C-l
<SPC> -~] <RET>’
Using ‘isearch-forward-regexp’:
‘C-M-s [^ <TAB> <LFD> C-q <RET> C-q C-l <SPC> -~]’
To delete all unprintable characters, simply use replace-regexp:
‘M-x replace-regexp <RET> [^ <TAB> C-q <LFD> C-q <RET> C-q C-l <SPC>
-~] <RET> <RET>’
Replacing is similar to the above. To replace all unprintable
characters with a colon, use:
M-x replace-regexp <RET> [^ <TAB> C-q <LFD> C-q <RET> C-q C-l <SPC>
-~] <RET> : <RET>