mysql正则表达式分割_利用正则表达式,分割地址至省市县,更新MySQL数据库数据...

一、部分主要源代码以及结果截图

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;public static voidmain(String[] args){

Connection conn=DBUtil.getConn();

List lists=new ArrayList();

String city=null;

String str=newString();

String str1=newString();//String str1=new String();

try{

Statement state=conn.createStatement();

ResultSet rs= state.executeQuery("select 详细地域,id from c_2");while(rs.next()) {//如果有结果,是认为是通过验证了

str=rs.getString("详细地域");

System.out.println(str);

str1=rs.getString("id");if (str != null)

{

String newStr=addressResolution(str);

System.out.println(newStr);

update_city(newStr,str1);

}

}

}catch(Exception e)

{

e.printStackTrace();

}

}public staticString addressResolution(String address){

String regex="(?[^省]+省|[^自治区]+自治区|.+市)(?[^自治州]+自治州|.+区划|[^市]+市|.+区)?(?[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?[^区]+区|.+镇)?(?.*)";

Matcher m=Pattern.compile(regex).matcher(address);

String province=null,city=null,county=null;

String str="";while(m.find()){

province=m.group("province");

city=m.group("city");

county=m.group("county");if(province.equals("北京市"))

{

str= province +city;//System.out.println(str);

}else if(province.equals("天津市"))

{

str= province +city;

}else{

str= province + city +county;//System.out.println(str);

}

}returnstr;

}public static voidupdate_city(String newStr,String str1) {//String sql = "update kejichengguo1 set diyu ='"+city+"' where wanchengdanwei ='"+value+"'";

String sql = "update c_2 set 详细地域 ='"+newStr+"' where id ='"+str1+"'";

Connection conn=DBUtil.getConn();

Statement state= null;try{

state=conn.createStatement();

state.executeUpdate(sql);

}catch(Exception e) {

e.printStackTrace();

}finally{

DBUtil.close(state, conn);

}

}

View Code

mysql正则表达式分割_利用正则表达式,分割地址至省市县,更新MySQL数据库数据..._第1张图片

二、相关知识

1.java.util.regex包下的Pattern类与Matcher类简单解释

java.util.regex  ——  匹配字符序列与正则表达式指定的模式的类。

java.util.regex.Matcher  ——  执行上匹配操作的引擎character sequence通过解释Pattern ;通过调用模式的matcher方法从模式创建匹配器。

java.util.regex.Pattern  ——  正则表达式的编译表示;必须首先将正则表达式(指定为字符串)编译为此类的实例

public static Pattern compile(String regex,

int flags)

public static boolean matches(String regex,

CharSequence input)

调用这种方便的方式的形式

Pattern.matches(regex, input);

表现方式与表达式完全相同

Pattern.compile(regex).matcher(input).matches()

如果一个模式多次被使用,编译一次并重用它将比每次调用此方法更有效。

编译给定的正则表达式,并尝试匹配给定的输入。

参数

regex - 要编译的表达式input - 要匹配的字符序列

结果

正则表达式是否匹配输入

代码中即使用了编译一次并进行了多次重用

Matcher m=Pattern.compile(regex).matcher(address);

Pattern与Matcher一起合作,Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持.;单独用Pattern只能使用Pattern.matcher(String regex,CharSequence input)一种最基础最简单的匹配。

2.利用正则表达式分割地区至省市县

String regex="(?[^省]+省|[^自治区]+自治区|.+市)(?[^自治州]+自治州|.+区划|[^市]+市|.+区)?(?[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?[^区]+区|.+镇)?(?.*)";

上述正则表达式根据自己所需的地区可以进行修改

(?[^省]+省|[^自治区]+自治区|.+市)

河北省 | 内蒙古自治区 | 北京市

用词来进行相同级别的省份的不同格式的名称

参考资料:

你可能感兴趣的:(mysql正则表达式分割)