考慮以下字符串+姓,我想解析成名字+姓氏列表:解析「家庭」的名字進入人們正則表達式
彼得 - 保羅,瑪麗&喬爾範德溫克爾
(和更簡單的版本)
我努力工作,如果我能做到這一點用正則表達式。我走了這麼遠
(?:([^, &]+))[, &]*(?:([^, &]+))
但這裏的問題是,我想在不同的拍攝要捕獲的姓氏。
我懷疑我以後什麼是可能的,但以防萬一...
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