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