mapcar で perform-string を使って文字列置換しようと思ってかなりハマったのでメモって置きます。

ダメな例

(mapcar '(lambda (s)
              (goto-char (point-min))
              (perform-replace s "" nil t t nil))
            '("foo[0-9]" "bar[0-9]"))

これだと “foo1 bar2” は削除できるけど “bar2” と2個めの検索要素だけしかないときに削除できない

良い例

(mapcar '(lambda (s)
              (goto-char (point-min))
              (perform-replace s "" nil t t t))
            '("foo[0-9]" "bar[0-9]"))

perform-replaceの最後の引数NOERRORtに設定しておけば該当する文字列がなくてもスムーズに次に進んでくれます。