我有三个示例twiki名称:
names = [ "JohnDoe", "JaneMcAdams", "BillyBobThorton" ]
我希望得到以下回复: * John Doe *简麦克亚当斯 * BillyBob Thorton
现在我有了这个让它们在帽子上分开(这是一件好事)。
re.findall('[A-Z][^A-Z]*', name)
如何将“Mc”视为分裂?
谢谢!
答案 0 :(得分:3)
我建议不要在这里使用正则表达式。我怀疑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]*
。