You ask "will this work". Like any regular expression related to paragraph matching there is always the possibility of edge cases it catches that you don't want it to. The "wider" you make your regex, the more likely that is to happen. If you intend to step through each find/replace one at a time so you can undo any that you don't want then you can experiment with it. However I find each and every document is different depending on how many times it has been converted in the past, manual editing, what it's original format was, what settings/program was used to convert it along the way etc. So long as you don't expect to stumble onto the holy grail of regexes that fixes all the problems for every document... it doesn't exist
In answer to your second question, yes you can do it. Just paste the text you want to find three times separated by \s+. e.g.
<p class="MsoPlainText"> </p>\s+<p class="MsoPlainText"> </p>
\s+<p class="MsoPlainText"> </p>