擅长:python、mysql、java
<p>名称是否总是以“规范”的方式书写,即除了da、de、do,…,每个部分都大写吗。。。?在</p>
<p>在这种情况下,您可以使用这个事实:</p>
<pre><code>>>> import re
>>> for t in (test1, test2, test3, test4):
... print(re.findall(r"(?:[a-z]+ )?[A-Z]\w+", t, re.UNICODE))
['Francisco', 'da Sousa', 'Rodrigues']
['Emiliano', 'Rodrigo', 'Carrasco']
['Alberto', 'de Francia']
['Bruno', 'Rezende']
>>>
</code></pre>
<p>做你想做的事情的“正确”方式(除了完全不做),应该是消极的后视:在一个没有任何da、de、do……前面的空间上分裂。遗憾的是,这是不可能的,因为<code>re</code>要求lookbehind的宽度相等。如果音节中没有名字,你真的不能假设,你可以这样做:</p>
^{pr2}$
<hr/>
<p>你可能偶尔也可能会遇到一些不起作用的情况:如果第一个字母是重音字符(或者假设文章中包含一个重音符号),那么它将不匹配。要解决此问题,您将无法使用外部库;<a href="https://pypi.python.org/pypi/regex" rel="nofollow noreferrer">^{<cd2>}</a>。在</p>
<p>你的新芬德尔会是这样的:</p>
<pre><code>regex.findall(r"(?:\p{Ll}+ )?\p{Lu}\w+", "Luiz Ângelo de Urzêda")
</code></pre>
<p><code>\p{Ll}</code>表示<em>任何</em>小写字母,<code>\p{Lu}</code>表示<em>任何</em>大写字母。在</p>