使用换行符分隔地址时,用于提取美国地址的RegEx无法正常工作

时间:2019-03-19 08:26:40

标签: regex

我有以下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

对此将提供任何帮助。

3 个答案:

答案 0 :(得分:3)

您可以将模式简化为类似这样的形式,以匹配地址,无论是一行还是多行。

\b\d+(?:\s+[\w,]+)+?\s+[a-zA-Z]{2}\s+\d{5}\b

正则表达式说明

  • \b\d+-从具有一个或多个数字的单词边界开始匹配
  • (?:\s+[\w,]+)+?-一种非分组模式,它匹配一个或多个空格,然后匹配具有一个或多个单词字符和逗号的文本,并且以非贪婪方式将其全部或多次匹配。
  • \s+[a-zA-Z]{2}-匹配一个或多个空格,然后匹配两个字母字符,以期望像CANY
  • 这样的文本
  • \s+\d{5}\b-后面跟一个或多个空格,最后是五个具有单词边界的数字,以避免在较大的文本中部分匹配

Demo

答案 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+-匹配一个或多个单词字符,空格和一个或多个数字

Demo