擅长:python、mysql、java
<p>您可以选择在捕获组1内的第一次匹配后重复换行和制表符,以使所有行都位于组1中</p>
<p>注意<code>.*</code>也可以匹配<code>\n\t</code>后面的空部分</p>
<pre><code>^lineC:\n\t(.*(?:\n\t.*)*)
</code></pre>
<ul>
<li><code>^</code>字符串的开头</li>
<li><code>lineC:\n\t</code>匹配{<cd5>}换行符和制表符</li>
<li><code>(</code>捕获<strong>第1组</strong>
<ul>
<li><code>.*</code>匹配任意字符0+次</li>
<li><code>(?:\n\t.*)*</code>可选地重复换行符、制表符和行的其余部分</li>
</ul>
</li>
<li><code>)</code>关闭组1</li>
</ul>
<p><a href="https://regex101.com/r/K7Hkzx/1" rel="nofollow noreferrer">Regex demo</a></p>
<p>示例代码</p>
<pre><code>import re
regex = r"^lineC:\n\t(.*(?:\n\t.*)*)"
s = ("lineA:\n"
" line1\n"
" line2\n"
" line3\n\n"
"lineB:\n"
" line4\n"
" line5\n"
" line6\n\n"
"lineC:\n"
" line7\n"
" line8\n"
" line9")
print(re.findall(regex, s, re.MULTILINE))
</code></pre>
<p>输出</p>
<pre><code>['line7\n\tline8\n\tline9']
</code></pre>