Java 正则表达式提取地址信息:省市区镇
这里提供一个简单的示例代码,使用正则表达式来匹配输入的字符串,提取出省、市、区、镇等信息:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AddressExtractor {
private static final String PROVINCE_REGEX = "((?:(?:新疆|西藏|宁夏|内蒙古|广西|香港|澳门)(?:自治区|特别行政区)?)|(?:[河湖]南|福建|江苏|浙江|广东|海南|湖北|湖南|甘肃|四川|云南|贵州|安徽|江西|山东|河北|山西|辽宁|吉林|黑龙江|陕西|青海|台湾|北京|上海|天津|重庆|香港|澳门))";
private static final String CITY_REGEX = "(?:(?:[\u4e00-\u9fa5]{2,5}(?:市|自治州))|(?:[\u4e00-\u9fa5]{2,3}(?:特别行政区|地区|盟)))";
private static final String DISTRICT_REGEX = "(?:(?:(?:[\u4e00-\u9fa5]{2,3}(?:市|区|县))|(?:[\u4e00-\u9fa5]{2,4}区))|(?:(?:(?:[\u4e00-\u9fa5]{2,5}(?:自治县|自治区))|(?:[\u4e00-\u9fa5]{2,5}旗))|(?:[\u4e00-\u9fa5]{2,5}(?:市|区))))";
private static final String TOWN_REGEX = "(?:[\u4e00-\u9fa5]{2,10}(?:街道|镇|乡))";
private static final Pattern ADDRESS_PATTERN = Pattern.compile("(" + PROVINCE_REGEX + ")?(" + CITY_REGEX + ")?(" + DISTRICT_REGEX + ")?(" + TOWN_REGEX + ")?");
public static void main(String[] args) {
String input = "北京市海淀区中关村街道";
Address address = extractAddress(input);
System.out.println(address);
}
public static Address extractAddress(String input) {
Address address = new Address();
Matcher matcher = ADDRESS_PATTERN.matcher(input);
if (matcher.find()) {
address.setProvince(matcher.group(1));
address.setCity(matcher.group(2));
address.setDistrict(matcher.group(3));
address.setTown(matcher.group(4));
}
return address;
}
public static class Address {
private String province;
private String city;
private String district;
private String town;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getDistrict() {
return district;
}
public void setDistrict(String district) {
this.district = district;
}
public String getTown() {
return town;
}
public void setTown(String town) {
this.town = town;
}
@Override
public String toString() {
return "Address{" +
"province='" + province + "'"
+ ", city='" + city + "'"
+ ", district='" + district + "'"
+ ", town='" + town + "'"
+ '}';
}
}
}
这个示例代码中使用了一个地址类来保存提取出来的信息,其中 extractAddress 方法接收一个字符串参数,返回一个地址对象。正则表达式中使用了一些常见的省、市、区、镇名称,可以根据实际情况进行修改或扩充。在 main 方法中演示了如何使用这个方法。
原文地址: https://www.cveoy.top/t/topic/nw3Y 著作权归作者所有。请勿转载和采集!