行政区划正则表达式匹配规则及java实现

本文介绍了一种用于解析详细地址的正则表达式规则,包括省份、城市、县区、小区或村庄、建筑编号等信息,并提供了Java代码实现,展示了如何从一个完整的地址字符串中提取出各部分地理信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(.*?省|.*?市|.*?自治区)?(.*?市|.*?县|.*?区|.*?自治州)?(.*?县|.*?区)(.*?小区|.*?村)(.*?号楼|.*?楼|.*?栋|.*?组|.*?号)?(.*)

简单的正则规则如上,不是实际生产环境用的,实际用比这要复杂的多,

复制上面的正则,到https://regexper.com 看一下规则,展示效果如下:

按照自己项目里面的需要,调整的满足要求后复制到java代码里面使用,java代码

	public static List<Map<String,String>> addressResolution(String address){

		String regex="(?<province>.*?省|.*?市)?(?<city>.*?市|.*?县|.*?区)?(?<county>.*?市|.*?县|.*?区)(?<village>.*?小区|.*?村)(?<building>.*?号楼|.*?楼|.*?栋|.*?队|.*?组|.*?号|.*?室)?(?<other>.*)";  //不要直接用这个,这个是经过大量精简后的

		String province=null, city=null,county=null,town=null,village=null,building=null,other=null;
		List<Map<String,String>> table=new ArrayList<Map<String,String>>();
		Map<String,String> row=null;

			Matcher m=Pattern.compile(regex).matcher(address);
			while(m.find()){
				row=new LinkedHashMap<String,String>();
				province=m.group("province");
				row.put("province", province==null?"":province.trim());
				city=m.group("city");
				row.put("city", city==null?"":city.trim());
				county=m.group("county");
				row.put("county", county==null?"":county.trim());
				village=m.group("village");
				row.put("village", village==null?"":village.trim());
				building=m.group("building");
				row.put("building", building==null?"":building.trim());
				other=m.group("other");
				row.put("other", other==null?"":other.trim());
				table.add(row);
			}

		return table;
	}

测试

System.out.println(addressResolution("黑龙江省大庆市测试县测试镇测试村测试队11号"));
### Java 中税号的正则表达式 在中国,常见的税号(纳税人识别号)有多种格式。对于企业而言,统一社会信用代码作为新的税号形式广泛使用;而个人所得税号通常是身份证号码。 #### 统一社会信用代码 (USCC) 统一社会信用代码是一个18位字符组成的编码,其构成规则如下: - 前缀为大写字母A至Z中的任意一位; - 接下来是六位行政区划代码; - 然后四位年份; - 后面两位顺序码; - 最后一位校验码可以是数字或字母X[^1]。 对应的正则表达式可写作: ```java String usccPattern = "^[A-Z][0-9]{6}[0-9]{4}[0-9]{2}[0-9A-Za-z]{1}[0-9Xx]$"; ``` 此模式能够有效验证大多数情况下合法的企业税号。 #### 中国公民身份号码 (CIDN) 针对自然人的税号即为其居民身份证件上的编号,一般遵循以下结构: - 总共十八个字符; - 开头六个位置代表地址码; - 下四个数表示出生日期; - 随后的三位随机分配给个体; - 结尾处有个别情况会带有英文字母X的小写或大写形式。 适用于此类情形的正则表达式如下所示: ```java String cidnPattern = "(^\\d{15}$)|(^\\d{17}(?:\\d|x|X)$)"; ``` 这段代码片段可用于检验输入是否符合标准的身份证明文件所规定的样式要求。 为了实现更精确地匹配不同类型的税号,在实际应用中可能还需要考虑更多细节因素以及特定行业的特殊规定。上述例子仅提供了一般性的指导原则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peihexian

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值