擅长:python、mysql、java
<p>这就是单词边界锚定<code>\b</code>的作用:</p>
<pre><code>>>> test = 'Testes huius rey sunt hij, videlicet, Magnificus Dominus Periohannes de Mazara, nobilis Georgius de la Chabica, Nicolaus Manfridus de Caxario et alij.'
>>> names = 'Nicolaus', 'Manfridus', 'Peri'
>>> names_regex = re.compile(r'\b'+'|'.join(names)+r'\b')
>>> names_regex.sub('PERSON',test)
'Testes huius rey sunt hij, videlicet, Magnificus Dominus Periohannes de Mazara, nobilis Georgius de la Chabica, PERSON PERSON de Caxario et alij.'
>>> test = 'Testes huius rey sunt hij, videlicet, Magnificus Dominus Periohannes de Mazara, nobilis Georgius de la Chabica, Nicolaus, Manfridus, de Caxario et alij.'
>>> names_regex.sub('PERSON',test)
'Testes huius rey sunt hij, videlicet, Magnificus Dominus Periohannes de Mazara, nobilis Georgius de la Chabica, PERSON, PERSON, de Caxario et alij.'
</code></pre>
<p>注意,它比两端的空格更普遍。。。i、 在第二个例子中用逗号。你知道吗</p>