Мне нужно извлечь имя, улицу1, улицу2, город, штат, почтовый индекс
У меня есть данные в этой форме
JOHN m SMITH [1111 WEST OAK ROAD, SUITE 101, CITY, ST 55555]
GEORGE m JONES [222 MAIN STREET, CITY, ST 55555]
Мои результаты для ДЖОНА должны быть
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;
Как добавить необязательную улицу2?
Я хочу 1 и только 1 "уличную" группу. Я думал, что это должно быть так: (....){1}?
улица2 необязательно ноль или 1 раз. Я думал, что он должен иметь это (...)?
но это не работает с данными ДЖОНА, и улица1, и улица2 входят в группу улиц:
^(?<name>.*)\[((?<street>.*)[,]\s){1}?((?<street2>.*)[,]\s)?(?<city>.*)[,]\s(?<state>.*)\s(?<zip>\d{5})\]$