擅长:python、mysql、java
<p>regex和替换与<code>format</code>的混合</p>
<p>假设在标题下方<strong>始终有一行i</p>
<pre><code>import re
text = """This is HeaderA
Line 1
Line 2
Line 3
Line 4
Line 5
This is HeaderB
Line 1
Line 2"""
ordered_matches = [] # global
def custom_match(m, all_matches=ordered_matches):
p = m.group(0)
if p.isdigit():
all_matches[-1] += [p]
else:
all_matches += [[p]]
return '' # doesn't matter
r = re.sub(r'([A-Z0-9]+)$', custom_match, text, flags=re.M)
for m in ordered_matches:
print(('Header{}{{}} '.format(m[0]) * (len(m)-1)).format(*m[1:]))
</code></pre>
<p>输出</p>
<pre><code>HeaderA1 HeaderA2 HeaderA3 HeaderA4 HeaderA5
HeaderB1 HeaderB2
</code></pre>