我有以下RegEx可以从字符串中提取美国地址。
(\d+)[ \n]+((\w+[ ,])+[\$\n, ]+){2}([a-zA-Z]){2}[$\n, ]+(\d){5}
当地址采用以下格式时,此功能不起作用。
2933 Glen Crow Court
San Jose
CA 95148
并且正在处理以下数据。
2933 Glen Crow Court,
San Jose, CA 95148
。
2933 Glen Crow Court, San Jose, CA 95148
对此将提供任何帮助。
答案 0 :(得分:3)
您可以将模式简化为类似这样的形式,以匹配地址,无论是一行还是多行。
\b\d+(?:\s+[\w,]+)+?\s+[a-zA-Z]{2}\s+\d{5}\b
正则表达式说明
\b\d+
-从具有一个或多个数字的单词边界开始匹配(?:\s+[\w,]+)+?
-一种非分组模式,它匹配一个或多个空格,然后匹配具有一个或多个单词字符和逗号的文本,并且以非贪婪方式将其全部或多次匹配。\s+[a-zA-Z]{2}
-匹配一个或多个空格,然后匹配两个字母字符,以期望像CA
,NY
\s+\d{5}\b
-后面跟一个或多个空格,最后是五个具有单词边界的数字,以避免在较大的文本中部分匹配答案 1 :(得分:1)
将?
添加到[ ,]
支票中:
(\d+)[ \n]+((\w+[ ,]?)+[\$\n, ]+){2}([a-zA-Z]){2}[$\n, ]+(\d){5}
答案 2 :(得分:1)
尝试此模式\d+\s+[\w ]+[\s,]+[\w ]+[\s,]+\w+ \d+
说明:
\d+\s+
-匹配一个或多个数字然后匹配一个或多个空格
[\w ]+[\s,]+
-匹配一个或多个单词字符或空格,然后匹配一个或多个空格或逗号
\w+ \d+
-匹配一个或多个单词字符,空格和一个或多个数字