次の文字列を指定すると、名前と姓のリストに解析したいと思います。
ピーター・ポール、メアリー&ジョエル・ヴァン・デル・ウィンケル
(およびより単純なバージョン)
正規表現でこれを行うことができるかどうかを調べようとしています。私はここまで持っています
(?:([^, &]+))[, &]*(?:([^, &]+))
しかし、ここでの問題は、姓を別のキャプチャでキャプチャしたいということです。
私は可能性を超えていると思いますが、念のため...
アップデート
グループからキャプチャを抽出するのは初めてだったので、使用した (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);
次のようなケースをカバーするために、受け入れられた回答を少し調整する必要がありました。
ピーター・ポール&ジョセフ・ヴァン・デル・ウィンケル
ピーター・ポール & ジョセフ・ヴァン・デル・ウィンケル