Find:
Code:
<p( [^<>]+)?>["“]((?!</p>).)*[^"”]</p>
Assumes the paragraph starts with a quote mark, accounts for smart or dumb quotes, matches optional attributes in the para tag, and matches tags in the paragraph assuming they aren't the para tag (see
HERE for how).
This one finds text before the quotes too:
Code:
<p( [^<>]+)?>((?!</p>).)*["“]((?!</p>).)*[^"”]</p>