擅长:python、mysql、java
<p>您可以使用<code>re.sub</code>。你知道吗</p>
<pre><code>>>> import re
>>> sfxs = ['suffix1', 'sfx2', 'suffix333']
>>> s = 'string-to-process-sfx2'
>>> re.sub(r'(' + '|'.join(sfxs) + r')$', '',s)
'string-to-process-'
>>> re.sub(r'\b(' + '|'.join(sfxs) + r')$', '',s)
'string-to-process-'
>>> re.sub(r'-(' + '|'.join(sfxs) + r')$', '',s)
'string-to-process'
</code></pre>
<p><code>'|'.join(sfxs)</code>帮助加入以<code>|</code>作为分隔符的<code>suffix</code>列表。所以<code>r'(' + '|'.join(sfxs) + r')$'</code>会形成一个类似于<code>(suff1|suff2|suff3|..)$</code>的正则表达式。注意<code>$</code>锚点,它与行的末尾匹配。所以这只能在最后进行匹配。你知道吗</p>
<pre><code>>>> re.sub(r'(' + '|'.join(sorted(sfxs, key=lambda x:len(x), reverse=True)) + r')$', '',s)
'string-to-process-'
</code></pre>