给定一个详细地址,通过java正则分别获取到省、市、区。
地址需要规范,乱七八糟的地址就靠高德API吧地理/逆地理编码-基础 API 文档-开发指南-Web服务 API | 高德地图API##产品介绍##{#title:introduce}地理编码/逆地理编码API是一类简单的HTTP接口,提供结构化地址与https://lbs.amap.com/api/webservice/guide/api/georegeo/
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static java.util.regex.Pattern.compile;
public class CityUtils {
public static void main(String[] args) {
String input = "广东自治区罗定市云浮区公安局";
String province = "";
String city = "";
String district = "";
// 提取省份
Pattern pattern = compile("([\\u4e00-\\u9fa5]+?(省|自治区))");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
province = matcher.group(1);
}
// 提取城市
pattern = compile(province + "([\\u4e00-\\u9fa5]+?(市|自治州|盟))");
matcher = pattern.matcher(input);
if (matcher.find()) {
city = matcher.group(1);
}
// 提取区县
pattern = compile("(?:" + province + ")?(?:\\S*?" + city + ")?([\\u4e00-\\u9fa5]+?(区|县|市辖区|市))");
matcher = pattern.matcher(input);
if (matcher.find()) {
district = matcher.group(1);
}
System.out.println("省:" + province);
System.out.println("市:" + city);
System.out.println("区:" + district);
}
}