1
我有三個樣品TWiki的名字:簡單的Python重新前瞻幫助
names = [ "JohnDoe", "JaneMcAdams", "BillyBobThorton" ]
我想下面的背: *李四 *簡·麥克亞當斯 * BillyBob桑頓
現在我有這在胸前帽子分開他們(這是一件好事)。
re.findall('[A-Z][^A-Z]*', name)
我怎麼不理 「MC」 的分裂?
謝謝!
我有三個樣品TWiki的名字:簡單的Python重新前瞻幫助
names = [ "JohnDoe", "JaneMcAdams", "BillyBobThorton" ]
我想下面的背: *李四 *簡·麥克亞當斯 * BillyBob桑頓
現在我有這在胸前帽子分開他們(這是一件好事)。
re.findall('[A-Z][^A-Z]*', name)
我怎麼不理 「MC」 的分裂?
謝謝!
我會建議不要在這裏使用正則表達式。我懷疑Mc是你需要匹配的唯一名字。你有沒有想過Mac,O,Van,Von,De?
我建議打破他們,你說你現在做,手動建立名字和姓氏。
獎金。正則表達式:
re.findall('(?:Mc|Mac|O|Van|Von|De)?[A-Z][^A-Z]*', name)
但Van,Von,De應該用空格分隔。
注意:如果您認爲您只想匹配McSomething,請使用短版本(?:Mc)?[A-Z][^A-Z]*
。
在這種情況下,Mc是唯一一個。我知道我會如何正確地做到這一點,但這是一種破解。 grr .. – rh0dium 2010-11-08 18:32:13
行 - 在中間怎麼回合3個字母或更多? – rh0dium 2010-11-08 18:32:59
請參閱編輯。我還添加了一個正則表達式。 – 2010-11-08 18:38:32