<p><code>regex</code>不应用于解析xml。请参见:
<a href="https://stackoverflow.com/a/6751339/7652544">Why it's not possible to use regex to parse HTML/XML: a formal explanation in layman's terms</a>
(<code>Why shouldn't you..</code>会是一个更好的标题)</p>
<p>但是,您可以改用BeautifulSoup:</p>
<pre><code>from bs4 import BeautifulSoup
data = """<p class="calibre1"><a id="p1"></a>Chapter 370: Slamming straight on</p>
<p class="softbreak"> </p>
<p class="calibre1">Hearing Yan Zhaoge’s suggestion, the Jade Sea City martial practitioners here were all stunned.</p>
<p class="calibre1"><a id="p7"></a>Chapter 372: Yan Zhaoge’s plan</p>
<p class="softbreak"> </p>
<p class="calibre1">Yan Zhaoge and Ah Hu sat on Pan-Pan’s back, black water swirling about Pan-Pan’s entire body, keeping away the seawater as he shot forward at lightning speed.</p>
i t"""
soup = BeautifulSoup(data, 'lxml')
for x in soup.find_all('p', {'class':'calibre1'}):
link = x.find('a')
title = x.text
corrected_title = soup.new_tag('h2')
corrected_title.append(title)
if link:
x.string=''
corrected_title = soup.new_tag('h2')
corrected_title.append(title)
link.append(corrected_title)
x.append(link)
print(soup.body)
</code></pre>
<p><strong>输出</strong></p>
<pre><code><body>
<p class="calibre1">
<a id="p1">
<h2>Chapter 370: Slamming straight on</h2>
</a>
</p>
<p class="softbreak"> </p>
<p class="calibre1">Hearing Yan Zhaoge’s suggestion, the Jade Sea City martial practitioners here were all stunned.</p>
<p class="calibre1">
<a id="p7">
<h2>Chapter 372: Yan Zhaoge’s plan</h2>
</a>
</p>
<p class="softbreak"> </p>
<p class="calibre1">Yan Zhaoge and Ah Hu sat on Pan-Pan’s back, black water swirling about Pan-Pan’s entire body, keeping away the seawater as he shot forward at lightning speed.</p>
i t
</body>
</code></pre>