name、street1、street2、city、state、zip を抽出する必要があります
この形式のデータがあります
JOHN m SMITH [1111 WEST OAK ROAD, SUITE 101, CITY, ST 55555]
GEORGE m JONES [222 MAIN STREET, CITY, ST 55555]
JOHN の結果は次のようになります。
name="JOHN m SMITH"
street1="1111 WEST OAK ROAD"
street2="SUITE 101"
city = "CITY"
state = "ST"
zip = "55555"
これはGEORGEのデータで動作します
Regex r = new Regex(@"^(?<name>.*)\[(?<street>.*)[,]\s(?<city>.*)[,]\s(?<state>.*)\s(?<zip>\d{5})\]$");
var match = r.Match(fullNameAndAddress);
name = match.Groups["name"].Value;
street = match.Groups["street"].Value;
city = match.Groups["city"].Value;
state = match.Groups["state"].Value;
zip = match.Groups["zip"].Value;
オプションの street2 を追加するにはどうすればよいですか?
1 つだけの「ストリート」グループが必要です。これが必要だと思いました: (....){1}?
street2 はオプションで、0 回または 1 回です。これがあればいいなと思いました(...)?
ただし、JOHN のデータでは機能しません。street1 と street2 の両方が street グループに入ります。
^(?<name>.*)\[((?<street>.*)[,]\s){1}?((?<street2>.*)[,]\s)?(?<city>.*)[,]\s(?<state>.*)\s(?<zip>\d{5})\]$