<p>你可以用</p>
<pre><code>re.findall(r'(?m)^=+[^\S\r\n]*(.*?)[^\S\r\n]*=+\s*(.*(?:\r?\n(?!=+.*?=).*)*)', s)
</code></pre>
<p>参见<a href="https://regex101.com/r/pGijuI/2" rel="nofollow noreferrer">regex demo</a></p>
<p><strong>细节</strong></p>
<ul>
<li><code>(?m)^</code>-行首</li>
<li><code>=+</code>-1个或更多<code>=</code>字符</li>
<li><code>[^\S\r\n]*</code>-除CR和LF之外的零个或多个空格字符</li>
<li><code>(.*?)</code>-第1组:除换行符以外的任何零个或多个字符,尽可能少</li>
<li><code>[^\S\r\n]*</code>-除CR和LF之外的零个或多个空格字符</li>
<li><code>=+</code>-1个或更多<code>=</code>字符</li>
<li><code>\s*</code>-0+空格</li>
<li><code>(.*(?:\r?\n(?!==+.*?=).*)*)</code>-第2组:
<ul>
<li><code>.*</code>-尽可能多的零个或多个字符,而不是换行符</li>
<li><code>(?:\r?\n(?!=+.*?=).*)*</code>-零个或多个
<ul>
<li><code>\r?\n(?!=+.*?=)</code>-一个可选的CR和LF,后面不跟1+<code>=</code>s,然后是除换行符以外的任何字符,尽可能少,然后是1+<code>=</code>s</li>
<li><code>.*</code>-尽可能多的零个或多个字符,而不是换行符</li>
</ul></li>
</ul></li>
</ul>
<p><a href="https://ideone.com/GmfPRp" rel="nofollow noreferrer">Python demo</a>:</p>
<pre><code>import re
rx = r"(?m)^=+[^\S\r\n]*(.*?)[^\S\r\n]*=+\s*(.*(?:\r?\n(?!=+.*?=).*)*)"
s = "== Title1 ==\n..........................\n.............\nEnd of Paragraph\n===Title2 ===\n.............\n.............\n............."
print(re.findall(rx, s))
</code></pre>
<p>输出:</p>
<pre><code>[('Title1', '..........................\n.............\nEnd of Paragraph'), ('Title2', '.............\n.............\n.............')]
</code></pre>