<p>您可以匹配关键字(或者使用<a href="https://www.regular-expressions.info/alternation.html" rel="nofollow noreferrer">alternation</a>)来匹配更多的关键字,并在关键字之后和匹配换行符之后考虑尾部制表符和空格。你知道吗</p>
<p>按照您尝试的模式使用2个捕获组:</p>
<pre><code>(?<!\S)(keyword)[\t ]*\r?\n[\t ]*(\w+)(?!\S)
</code></pre>
<p><strong>解释</strong></p>
<ul>
<li><code>(?<!\S)</code>负的lookback,断言直接在左边的不是非空格字符</li>
<li><code>(keyword)</code>在<strong>组1中捕获匹配关键字的</strong></li>
<li><code>[\t ]*</code>匹配0+个制表符或空格</li>
<li><code>\r?\n</code>匹配换行符</li>
<li><code>[\t ]*</code>匹配0+个制表符或空格</li>
<li><code>(\w+)</code>捕获<strong>第2组</strong>匹配1+个单词字符</li>
<li><code>(?!\S)</code>负向前看,断言直接在右边的不是非空格字符</li>
</ul>
<p><a href="https://regex101.com/r/7dNuuu/1" rel="nofollow noreferrer">Regex demo</a>| <a href="https://ideone.com/EviBhd" rel="nofollow noreferrer">Python demo</a></p>
<p>例如:</p>
<pre><code>import re
regex = r"(?<!\S)(keyword)[\t ]*\r?\n[\t ]*(\w+)(?!\S)"
test_str = (" This is my keyword\n"
" value")
matches = re.search(regex, test_str)
if matches:
print('{} {}'.format(matches.group(1), matches.group(2)))
</code></pre>
<p>输出</p>
<blockquote>
<p>keyword value</p>
</blockquote>