我需要从地址中提取 6 位邮政编码。
“51 Bras Basah Road #01-01 Manulife Centre Singapore 189554”
邮政编码总是 6 位数字,但不一定在地址的最后。
请帮我提供一个正确的“java”正则表达式来从上面的地址获取邮政编码。
阿斯米
如果您可以确定邮政编码是您输入的唯一 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);
}
这是简单的正则表达式
(.*)((\d){6})$
第一组是“51 Bras Basah Road #01-01 Manulife Centre Singapore” 第二组是邮政编码(6位数)
这是一个正则表达式,它将找到最后六位数字:
((\d{6}.*)*\s)?(\d{6})([^\d].*)?$
当然,您需要在编译模式时对字符串进行转义:
Pattern postal_code_group3 = Pattern.compile("((\\d{6}.*)*\\s)?(\\d{6})([^\\d].*)?$");
您可以从任何匹配的第 3 组中获取邮政编码。
请注意,第 2 组在邮政编码前强制使用空格,除非字符串以邮政编码开头。
第 4 组负责处理邮政编码之后的任何内容,并防止尾随的 7 位或更多位数字被匹配为邮政编码。