import re
pattern = r'<p.*?>.*?</p>'
html_str = '<p>i have</p> <p style="text-align:justify">$$</p><p> asdas jas dafad</p><p>$$</p><p>asdasd</p><p><span>$$</span></p>'
new_html_str = re.sub(pattern, lambda match: "1" if '$$' in match.group() else match.group(),s)
print(new_html_str)
prints - '<p>i have</p> 1<p> asdas jas dafad</p>1<p>asdasd</p>1'
my answer is completely based on your approach, for a better solution, I suggest to parse the html and process.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…