简单的python re lookahead帮助

时间:2010-11-08 18:20:40

标签: python regex

我有三个示例twiki名称:

names = [ "JohnDoe", "JaneMcAdams", "BillyBobThorton" ]

我希望得到以下回复:    * John Doe    *简麦克亚当斯    * BillyBob Thorton

现在我有了这个让它们在帽子上分开(这是一件好事)。

re.findall('[A-Z][^A-Z]*', name)

如何将“Mc”视为分裂?

谢谢!

1 个答案:

答案 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]*