\d{1,4}( \w+){1,5}, (.*), ( \w+){1,5}, (AZ|CA|CO|NH), [0-9]{5}(-[0-9]{4})?
在此正则表达式中,您有一个太多的空格(在之前( \w+){1,5}
,该空格已经以1开头)。删除它,它与您的示例匹配。
我认为您无法假设会有“ 123单元”或类似的单元,或者可能有多个单元(例如“ Building A,apt 3”)。请注意,在您的初始正则表达式中,.
匹配,
可能会导致很长(且不需要的)匹配。您可能应该接受几个这样的组,但组的数量, (.*)
有所限制(例如,用代替(, [^,]{1,20}){0,5}
。
无论如何,您可能永远不会获得100%准确的信息,不会接受任何人可能向他们投掷的变化。做很多测试!祝好运。