使用正则表达式解析地址

Parsing address with Regex

我希望能够使用正则表达式将一个字符串解析为多个信息字符串。例如,让我们使用一个地址:"My Street 10 90210 Beverly Hills"。我可以由此创建的字符串示例:

我一直在尝试为它创建一个模式,但在分析和剖析字符串时我有点迷茫。

有人可以帮助我开始吗?

我会使用 string.split 函数。

String s = "My Street 10 90210 Beverly Hills";
String parts[] = s.split("\s+(?=\d+\s+\d+)|(?<=\d+)\s+(?=[A-Z])|(?<=\d+)\s+(?=\d+)");
System.out.println(Arrays.toString(parts));

输出:

[My Street, 10, 90210, Beverly Hills]

解释:

  • \s+(?=\d+\s+\d+) 匹配一个或多个 space 仅当其后跟一位或多位数字加一位或多位 space 加一位或多位数字时。这样门牌号前的space就满足这个条件。所以它匹配了。

  • | 调用了交替运算符。

  • (?<=\d+)\s+(?=[A-Z]) 匹配一个或多个 space ,它们前面有一个或多个数字,然后是一个大写字母。所以字符串 city 之前的 space 将满足此条件并匹配。

  • (?<=\d+)\s+(?=\d+) 这匹配数字之间的所有 space。所以门牌号和邮政编码之间的 spaces 匹配了。

  • 根据匹配的 space 拆分您的输入将为您提供所需的输出。