擅长:python、mysql、java
<p>您可以在字段之间进行匹配,并替换匹配中的换行符</p>
<pre><code>^field\d+:.*(?:\n(?!field\d+:).*)*
</code></pre>
<ul>
<li><code>^</code>字符串的开头</li>
<li><code>field\d+:.*</code>匹配字段后跟1+位数,<code>:</code>和行的其余部分</li>
<li><code>(?:</code>非捕获组作为一个整体重复
<ul>
<li><code>\n</code>匹配换行符</li>
<li><code>(?!field\d+:)</code>断言字符串不以字段模式开头</li>
<li><code>.*</code>如果断言为true,则匹配整行</li>
</ul>
</li>
<li><code>)*</code>关闭该组并可选地重复</li>
</ul>
<p>例如</p>
<pre><code>import re
s = "field1: content asd..\n\nfield2: content\n\nqwe...\n\nfield3: content asfdqegt"
pattern = r"^field\d+:.*(?:\n(?!field\d+:).*)*"
res = [x.replace('\n', '') for x in re.findall(pattern, s, re.MULTILINE)]
print (res)
</code></pre>
<p>输出</p>
<pre><code>['field1: content asd..', 'field2: contentqwe...', 'field3: content asfdqegt']
</code></pre>
<p>见<a href="https://regex101.com/r/sBsqmt/1" rel="nofollow noreferrer">regex demo</a>和<a href="https://ideone.com/OwwxXA" rel="nofollow noreferrer">Python demo</a></p>