考虑以下字符串+姓,我想解析成名字+姓氏列表:解析“家庭”的名字进入人们正则表达式
彼得 - 保罗,玛丽&乔尔范德温克尔
(和更简单的版本)
我努力工作,如果我能做到这一点用正则表达式。我走了这么远
(?:([^, &]+))[, &]*(?:([^, &]+))
但这里的问题是,我想在不同的拍摄要捕获的姓氏。
我怀疑我以后什么是可能的,但以防万一...
UPDATE
提取从该组捕获了新的给我,所以这里我用了(C#)代码:
string familyName = "Peter-Paul, Mary & Joël Van der Winkel";
string firstperson = @"^(?<First>[-\w]+)"; //.Net syntax for named capture
string lastname = @"\s+(?<Last>.*)";
string others = @"(?:(?:\s*[,|&]\s*)(?<Others>[-\w]+))*";
var reg = new Regex(firstperson + others + lastname);
var groups = reg.Match(familyName).Groups;
Console.WriteLine("LastName=" + groups["Last"].Value);
Console.WriteLine("First person=" + groups["First"].Value);
foreach(Capture firstname in groups["Others"].Captures)
Console.WriteLine("Other person=" + firstname.Value);
我不得不稍微调整公认的答案得到它覆盖的情况下,如:
彼得 - 保罗&约瑟夫·范德温克尔
彼得 - 保罗&约瑟夫·范德温克尔
我无法从你的问题看这些名字都保证是标准化的,但对于像彼得保罗面包车名der Winkel? (即没有连字符和荷兰语而不是佛兰德/英文大写规则)。 – Ruben 2009-08-24 14:15:31
好问题。我不想在这里太聪明。在这种情况下,如果结果显示firstname = Peter和lastname = Paul van der Winkel,我不介意。目的是要有一个“快速和粗略”的方式来输入联系方式;用户可以随时回退分开输入字段。 – Benjol 2009-08-24 14:18:17
更新与正则表达式为我的答案。 – MaxVT 2009-08-24 14:25:10