regular expression可以帮助开发者实施很快的字符串操作,常见的操作比如像匹配、切割、替换和获取
尽管不像python那样具有优秀的reptile潜力,但是个人认为搞起来还是很不错的,个人推荐项目https://github.com/xiepuhuan/reptile.git
1、匹配:
比如String str = "15225723153",我们需要判断该字符串是否是中国的通讯号码,这时候用正则表达式做一个模板(模板可以根据语法自由指定)来判断str是否匹配该模板就变得非常方便!下面来制作一个实例:
String regex="1[358]\\d{9}" //1代表第一个是1,[358]代表第二个数可以为3 or 5 or 8,\d代表可以为0-9任意值,{9}代表\d这样的数连续有9个
Java中可以使用String的matches()方法来进行匹配,比如:
boolean b = str.matches(regex);
如此我们就可以实现简单匹配功能!
2、切割:
如果现在有一字符串 String str = "song ya hui zhang zheng yang",我们现在要实现切割,切割的每个word都放置在数组中,实现方式如下:
1、先定模板,因为我们要去按照空格去切割,但是空格键有多有少,怎么定义呢
2、String regex = " +" //+代表空格前面的值有最少有一个,
【注:】如果是?代表有一个或0个,* 代表做少是0个
3、替换:
替换就更简单了,我们常常用的replace() 或者replaceAll()方法就是替换的方法,这里不再赘述
4、获取:
比如我们现在对一个html网页进行数据读取,希望获取其中的邮箱数据,
首先,我们还是先定义模板:
String email = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{1,3})+";
ok,下面来写代码:
//这里拿本机的html作举例
URL url = new URL("http://localhost:63342/web_sxcity/web_index/sx_login.html?_ijt=jpumq4sbp38te3dq0760upt0c2");
//创建一个读取流
BufferReader br = new BufferReader(new InputStreamReader(url.openStream()));
//创建一个集合
List<String> arr = new ArrayList();
String line = null;
//对html进行行读取,直到读取结束
while((line = br.readline)!=null){
//对每行进行正则表达式匹配
Pattern p = Pattern.compile(email);
Matcher m = p.matcher(line);
//对每行都进行正则表达式遍历
while(m.find){
//如果有就添加到集合中
arr.add(m.group);
}
}