擅长:python、mysql、java
<p>你可以用</p>
<pre><code>re.findall(r'\B%\w+\b(?!%)', text)
</code></pre>
<p>参见<a href="https://regex101.com/r/546ET8/1" rel="nofollow noreferrer"><strong>regex demo</strong></a></p>
<p><strong>正则表达式详细信息</strong></p>
<ul>
<li><code>\B</code>-要求下一个<code>%</code>前面不能有单词字符的非单词边界</li>
<li><code>%</code>-a<code>%</code>字符</li>
<li><code>\w+</code>-1+单词字符(字母/数字/下划线)</li>
<li><code>\b</code>-单词边界,与<code>\w+</code>匹配的最后一个字符后面不能跟单词字符(必须使用它,因为<code>\w+</code>后面有一个负的向前看以避免回溯)</li>
<li><code>(?!%)</code>-右边必须没有<code>%</code>字符。你知道吗</li>
</ul>