0

我需要从地址中提取 6 位邮政编码。

“51 Bras Basah Road #01-01 Manulife Centre Singapore 189554”

邮政编码总是 6 位数字,但不一定在地址的最后。

请帮我提供一个正确的“java”正则表达式来从上面的地址获取邮政编码。

阿斯米

4

3 回答 3

6

如果您可以确定邮政编码是您输入的唯一 6 位数字,您应该能够逃脱:

Pattern zipPattern = Pattern.compile("(\\d{6})");
Matcher zipMatcher = zipPattern.matcher("51 Bras Basah Road #01-01 Manulife Centre Singapore 189554");
if (zipMatcher.find()) {
    String zip = zipMatcher.group(1);
}

另请参阅java.util.regex.Pattern 的 API 文档

于 2013-01-10T07:43:23.493 回答
0

这是简单的正则表达式

(.*)((\d){6})$

第一组是“51 Bras Basah Road #01-01 Manulife Centre Singapore” 第二组是邮政编码(6位数)

于 2013-01-10T07:51:28.143 回答
0

这是一个正则表达式,它将找到最后六位数字:

((\d{6}.*)*\s)?(\d{6})([^\d].*)?$

当然,您需要在编译模式时对字符串进行转义:

Pattern postal_code_group3 = Pattern.compile("((\\d{6}.*)*\\s)?(\\d{6})([^\\d].*)?$");

您可以从任何匹配的第 3 组中获取邮政编码。

请注意,第 2 组在邮政编码前强制使用空格,除非字符串以邮政编码开头。

第 4 组负责处理邮政编码之后的任何内容,并防止尾随的 7 位或更多位数字被匹配为邮政编码。

于 2013-01-10T08:25:42.920 回答