擅长:python、mysql、java
<p>如果您的模式都是由可选模式构建的,请确保您得到的字符数尽可能少。因此,必须至少有一个边界。我想单词boundary<code>\b</code>是一种有效的方法(因为您需要匹配<em>单词</em>):</p>
<pre><code>([A-Za-z]+?)(?:Suff)?\b
</code></pre>
<p>见<a href="https://regex101.com/r/sT4aD7/3" rel="nofollow">demo</a></p>
<p><a href="http://ideone.com/pCpTpO" rel="nofollow">IDEONE DEMO</a>:</p>
<pre><code>import re
p = re.compile(r'([A-Za-z]+?)(?:Suff)?\b')
test_str = "textSuff more words tSuff"
print(re.findall(p, test_str))
</code></pre>
<p>输出:</p>
<pre><code>['text', 'more', 'words', 't']
</code></pre>