我有一个人名列表,可以有3种不同的样式:
{last name}, {first name} {middle name}
(例如:Bob,Dylan Tina)]{last name}, {first name} {middle initial}.
(例如:Bob,Dylan T。)]{last name}, {first name}
(例如:鲍勃,迪伦)这是我写的正则表达式:
^[a-zA-Z]+(([' ,.-][a-zA-Z ])?[a-zA-Z]*)*$
但是它不起作用。
您应使用此正则表达式:
(\w+),\s*(\w+)\s*(\w{0,}\.*)
这是您得到的结果:
>>> import re
>>> s1 = "Bob, Dylan Tina"
>>> s2 = "Bob, Dylan"
>>> s3 = "Bob, Dylan T."
>>> p = re.compile(r"(\w+),\s*(\w+)\s*(\w{0,}\.*)")
>>> re.findall(p, s1)
[('Bob', 'Dylan', 'Tina')]
>>> re.findall(p, s2)
[('Bob', 'Dylan', '')]
>>> re.findall(p, s3)
[('Bob', 'Dylan', 'T.')]