正则表达式拆分快递地址 java
时间: 2023-12-10 22:35:11 浏览: 22
以下是使用正则表达式拆分快递地址的示例代码:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String address = "江苏省南京市鼓楼区中山北路321号";
String regex = "(?<province>[^省]+省)?(?<city>[^市]+市)?(?<district>[^区]+区|[^县]+县)?(?<others>.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(address);
if (matcher.find()) {
String province = matcher.group("province");
String city = matcher.group("city");
String district = matcher.group("district");
String others = matcher.group("others");
System.out.println("省:" + province);
System.out.println("市:" + city);
System.out.println("区/县:" + district);
System.out.println("详细地址:" + others); }
}
}
```
输出结果为:
```
省:江苏
市:南京
区/县:鼓楼区
详细地址:中山北路321号
```
正则表达式中的`(?<province>[^省]+省)?`表示匹配不包含“省”字的字符串,其中`(?<province>`表示给匹配到的字符串起一个名字叫做“province”,`[^省]+`表示匹配不包含“省”字的字符串,`省`表示匹配“省”字,`)?`表示这个匹配是可选的。其他的匹配规则类似。