Python3-ban:
import re
with open("book") as fin, open("book.out","w") as fo:
fo.write( re.sub(r"[p]\s*(?!–)([^<>]+?)[/p]", r"\1", fin.read()) )
Értelemszerűen a kisebb-nagyobb jeleket cseréld le. Egyébként, ahogy átmásoltam a szövegedet a próbához, kétféle kötőjelszerű karaktert kaptam, de lehet, hogy valamit elrontottam a tesztnél.
Ha nem, akkor a (?!-) helyett ilyesmi kell (?![-—])
--
eutlantis