Java利用正则表达式实现省市镇识别,省市镇顺序打乱

时间: 2023-07-07 18:07:23 浏览: 55
可以通过正则表达式的分组和反向引用实现省市镇识别,顺序可以打乱。以下是一个简单的示例: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class Demo { public static void main(String[] args) { String input = "四川省成都市高新区"; String patternStr = "(省|自治区|特别行政区)?([\\u4e00-\\u9fa5]+市)?([\\u4e00-\\u9fa5]+区|县|市)?([\\u4e00-\\u9fa5]+[街道|镇|乡])?"; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(input); while (matcher.find()) { String province = matcher.group(1); String city = matcher.group(2); String district = matcher.group(3); String town = matcher.group(4); System.out.println(province + city + district + town); } } } ``` 以上代码通过正则表达式 `"(省|自治区|特别行政区)?([\\u4e00-\\u9fa5]+市)?([\\u4e00-\\u9fa5]+区|县|市)?([\\u4e00-\\u9fa5]+[街道|镇|乡])?"` 匹配输入字符串中的省、市、区县和乡镇信息,并使用分组将它们提取出来。其中,`[\\u4e00-\\u9fa5]` 表示匹配中文字符,`?` 表示匹配零次或一次,`+` 表示匹配一次或多次,`|` 表示或,`()` 表示分组。在循环中,我们可以依次获取省、市、区县和乡镇信息,并打印出来。 如果输入字符串中的省市镇顺序打乱,也可以通过正则表达式进行识别。例如,以下代码可以识别出 `input` 中的乡镇、区县、市和省,无论它们的顺序如何: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class Demo { public static void main(String[] args) { String input = "高新区四川省成都市"; String patternStr = "(省|自治区|特别行政区)?([\\u4e00-\\u9fa5]+市)?([\\u4e00-\\u9fa5]+区|县|市)?([\\u4e00-\\u9fa5]+[街道|镇|乡])?"; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(input); String[] result = new String[4]; while (matcher.find()) { String province = matcher.group(1); if (province != null) { result[3] = province; } String city = matcher.group(2); if (city != null) { result[2] = city; } String district = matcher.group(3); if (district != null) { result[1] = district; } String town = matcher.group(4); if (town != null) { result[0] = town; } } for (String s : result) { System.out.print(s); } } } ``` 以上代码通过在循环中判断匹配到的字符串属于哪个分组,并将其存入一个数组中。最后,我们可以按照乡镇、区县、市和省的顺序输出它们。

相关推荐

最新推荐

recommend-type

Java使用正则表达式提取XML节点内容的方法示例

主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧,需要的朋友可以参考下
recommend-type

Java使用正则表达式验证用户名和密码的方法

主要介绍了Java使用正则表达式验证用户名和密码的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

Java正则表达式验证固定电话号码符合性

主要介绍了Java正则表达式验证固定电话号码符合性的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

java正则表达式匹配网页所有网址和链接文字的示例

主要介绍了java正则表达式匹配网页所有网址和链接文字java正则表达式匹配,需要的朋友可以参考下
recommend-type

Java使用正则表达式去除小数点后面多余的0功能示例

主要介绍了Java使用正则表达式去除小数点后面多余的0功能,结合具体实例形式分析了java字符串正则替换相关操作技巧,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB图像处理算法宝典:从理论到实战

![MATLAB图像处理算法宝典:从理论到实战](https://img-blog.csdnimg.cn/20200717112736401.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1emhhbzk5MDE=,size_16,color_FFFFFF,t_70) # 1. MATLAB图像处理基础理论 MATLAB图像处理是一种利用MATLAB编程语言进行图像处理的强大工具。它提供了丰富的函数和工具箱,用于图像获取、增强、分
recommend-type

matlab中1/x的非线性规划

在MATLAB中,可以使用非线性规划函数(`fmincon`)来优化一个包含1/x的非线性目标函数。下面是一个简单的例子: ```matlab % 定义目标函数 fun = @(x) 1/x; % 定义约束函数(这里没有约束) nonlcon = []; % 定义初始点 x0 = 1; % 定义优化选项 options = optimoptions('fmincon', 'Display', 'iter'); % 进行非线性规划 [x, fval] = fmincon(fun, x0, [], [], [], [], [], [], nonlcon, options); ``` 在
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。