You're going to have to use this hackish solution iteratively, and it won't probably even work perfectly for complicated HTML:
<a(\s[^>]*)?>.*?(</a>)?
Alternatively, you can try one of the existing HTML sanitizers/parsers out there.
HTML is not a regular language; any regex we give you will not be 'correct'. It's impossible. Even Jon Skeet and Chuck Norris can't do it. Before I lapse into a fit of rage, like @bobince [in]famously once did, I'll just say this:
Use a HTML Parser.
(Whatever they're called.)
EDIT:
If you want to 'incorrectly' strip out </a>
s that don't have any <a>
s as well, do this:
</?[a\s]*[^>]*>