这里提供一个简单的示例代码,使用正则表达式来匹配输入的字符串,提取出省、市、区、镇等信息:

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 方法中演示了如何使用这个方法。

Java 正则表达式提取地址信息:省市区镇

原文地址: https://www.cveoy.top/t/topic/nw3Y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录