java - 使用正则表达式解析地址

标签 java regex parsing

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

  • 我的街道 – 街道名称
  • 10 – 门牌号
  • 90210 – 邮政编码
  • 比佛利山庄 – 城市

我一直在尝试创建一个供其使用的模式,但在分析字符串并剖析它时我有点迷失了。

有人可以让我开始做这个吗?

最佳答案

我会使用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+)仅当后跟一位或多位数字加上一位或多位空格加上一位或多位数字时,才匹配一个或多个空格。这样门牌号前面的空格就满足这个条件。所以它匹配了。

  • |称为交替运算符。

  • (?<=\\d+)\\s+(?=[A-Z])匹配一个或多个空格,前面有一个或多个数字,后跟一个大写字母。所以字符串 city 之前的空格满足这个条件并被匹配。

  • (?<=\\d+)\\s+(?=\\d+)这匹配数字之间的所有空格。因此门牌号和邮政编码之间的空格是匹配的。

  • 根据匹配的空格分割输入将为您提供所需的输出。

关于java - 使用正则表达式解析地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28219214/

相关文章:

javascript - 尝试使用 Express js 路由解析 API 响应时出现 HPE_INVALID_HEADER_TOKEN

parsing - HTTP2 上的 REST API : I need to parse the binary response?

java - Mockito 使用正则表达式验证是否使用正确的参数调用了方法

regex - PCRE 正则表达式 空格

java - 如何通过 Java 泛型将子类型添加到父类(super class)型列表

java - Eclipse OSGi Framwork 启动器可用 bundle

regex - 设置 $/="\R"会允许 chomp() 与 perl 中的大多数文件一起正常工作吗?

java - EBNF/半熟 : how to translate regexp into PEG?

java - 如何使用 Reactor 3.x 将 List<T> 转换为 Flux<T>

java - javax.xml.registry.infomodel.* 包有什么用?忘记还是实现?