我需要提取名称、街道 1、街道 2、城市、州、邮编
我有这种形式的数据
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"
这适用于乔治的数据
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 个“街头”组。我认为它应该有这个:(....){1}?
street2 是可选的 0 或 1 次。我认为它应该有这个(...)?
但它不适用于 JOHN 的数据,street1 和 street2 都进入了街道组:
^(?<name>.*)\[((?<street>.*)[,]\s){1}?((?<street2>.*)[,]\s)?(?<city>.*)[,]\s(?<state>.*)\s(?<zip>\d{5})\]$