擅长:python、mysql、java
<p>你可以用</p>
<pre><code>(?m)^(?:limk\s+([a-zA-Z0-9]{3})|([a-zA-Z0-9]{3})\s+limk)$
</code></pre>
<p>参见<a href="https://regex101.com/r/551A6e/2" rel="nofollow noreferrer">regex demo</a>。你知道吗</p>
<p><strong>细节</strong></p>
<ul>
<li><code>(?m)</code>-使锚点在换行符处匹配</li>
<li><code>^</code>-行首</li>
<li><code>(?:</code>-容器化非捕获组的开始(将锚定应用于所有备选方案):
<ul>
<li><code>limk</code>-<code>limk</code>在行尾</li>
<li><code>\s+</code>-1+空格</li>
<li><code>([0-9a-zA-Z]{3})</code>-捕获组1:三个alnum字符</li>
</ul></li>
<li><code>|</code>-或
<ul>
<li><code>([0-9a-zA-Z]{3})</code>-捕获组2:三个alnum字符</li>
<li><code>\s+</code>-1+空格</li>
<li><code>limk</code>-一个<code>limk</code>字</li>
</ul></li>
<li><code>)</code>-分组结束</li>
<li><code>$</code>-字符串结尾。你知道吗</li>
</ul>
<p><a href="https://ideone.com/SZhLiy" rel="nofollow noreferrer">Python code</a>:</p>
<pre><code>import re
rx = re.compile(r"^(?:limk\s+([a-zA-Z0-9]{3})|([a-zA-Z0-9]{3})\s+limk)$", re.M)
s = "limk ab1\nlimk ab2 helo\nrest helo\nab3 limk helo\nab4 limk"
print (["{}{}".format(x,y) for x,y in rx.findall(s)])
# => ['ab1', 'ab4']
</code></pre>