【发布时间】:2021-12-16 15:33:36
【问题描述】:
我正在尝试从具有不同格式的数据框中的地址列中提取状态缩写。示例:
"123 Any St., Some City, IL 65234 United States"
"456 Any Other St That Town, CA 62626-1234 US"
我使用的代码适用于具有 5 位邮政编码的字符串,但不适用于具有 9 位邮政编码的字符串:
df$state <- str_extract(df$address, "\\b[A-Z]{2}(?=\\s+\\d{5}$)")
如何更改它以提取状态,然后是 5 位和 9 位邮政编码?
【问题讨论】:
-
匹配状态缩写与正则表达式
(?<=, )(?:AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY)(?=\d{5}(?:-\d{4})?。请注意,正则表达式以空格结尾。