擅长:python、mysql、java
<p>使用<code>re</code>,您可以捕获匹配的模式,并使用自定义分隔符重新格式化:</p>
<pre><code>word_list=['word', 'kap1','another word', 'another-1 word', 'another word 1']
import re
p = r'([a-zA-Z]+)[- ]?([0-9]+)'
[re.sub(p, r'\1{}\2'.format(sep), w) for w in word_list if re.fullmatch(p, w) for sep in ['', ' ', '-']]
# ['kap1', 'kap 1', 'kap-1']
</code></pre>
<p>预编译模式:</p>
<pre><code>p = re.compile(r'([a-zA-Z]+)[- ]?([0-9]+)')
[p.sub(r'\1{}\2'.format(sep), w) for w in word_list if p.fullmatch(w) for sep in ['', ' ', '-']]
# ['kap1', 'kap 1', 'kap-1']
</code></pre>