java day16第十六课 正则表达式

正则表达式

 正则表达式用于操作字符串数据
 通过一些特定的符号来体现的
 所以我们学习掌握正则表达式,必须要学习一些符号 
package com.rf.zhengze;

public class QqDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		 * 需求:定义一个功能对qq进行校验
		 * 要求:长度为6~15位,只能是数字,0不能开头
		 * 
		 */
		String str = "12d456";
//		checkQQ(str);
		
		String regex = "[1-9][0-9]{4,14}";//正则表达式
		System.out.println(str+"匹配结果:"+str.matches(regex));
	}

	public static void checkQQ(String qq){
		int len = qq.length();
		if(len > 5 && len < 16){
			if(!qq.startsWith("0")){
				
				try {
					long l = Long.parseLong(qq);
					System.out.println(l+"正确");
				} catch (NumberFormatException e) {
					// TODO: handle exception
					System.out.println(qq+"含有非法字符");
				}
			}else{
				System.out.println(qq+"不能以0开头");
			}
		}else{
			System.out.println(qq+"长度错误");
		}
		
		
	}
	
}


匹配

	//其实就是使用的就是String类中的matches方法
	//匹配手机号码是否正确
	public static void phoneRegex(){
		String tel = "18227284635";
		String regex = "1[3578][0-9]{9}";
		System.out.println(tel.matches(regex));;
		
		
	}

切割

//其实使用的就是String类中的split方法
public static void splitDemo(){
//		String str  = "zhangsan              lisi     wangwu";
//		String[] names = str.split(" +");
//		for(String name:names){
//			System.out.println(name);
//		}
		
		String str  = "zhangsanyyyylisi888888wangwu";
//		String[] names = str.split("\\.");//.在正则中表示特殊符号,所以需要转译
		String[] names = str.split("(.)\\1+");
		for(String name:names){
			System.out.println(name);
		}
		
	}

替换

	 //其实使用的就是String类里面的replaceAll方法
	public static void replaceAllDemo(){
		String str  = "zhangsanyyyylisi888888wangwu";
//		str = str.replaceAll("(.)\\1+", "#");
		str = str.replaceAll("(.)\\1+", "$1");//一个方法里面,第一个参数里面用到了正则的话,第二个想用里面的参数用$符号,"$1"表示获取前一个参数中的第一组
		System.out.println(str);
	}
	如何实现182****8633???

获取


 //将正则规则进行对象封装
 // Pattern p = Pattern.compile("a*b");
 //通过正则对象的matcher方法和字符串关联,获取要对字符串操作的匹配器对象Matcher
 // Matcher m = p.matcher("aaaaab");
 //通过Matcher匹配器对象的方法对字符串进行操作
 // boolean b = m.matches();
public static void huoqvDemo(){
		String str = "da jia  hao,ming tian fang jia";
		String regex = "\\b[a-z]{3}\\b";
		//1、将正则封装成对象
		Pattern p = Pattern.compile(regex);
		//2、通过正则对象获取匹配器对象
		Matcher m = p.matcher(str);
		//使用Matcher对象对方法对字符串进行操作
		//既获取三个字母组成对单词
		//查找 find()
//		m.find();
//		System.out.println(m.group());//获取匹配对子序列
		System.out.println(str);
		while(m.find()){
			System.out.println(m.group());
			System.out.println(m.start()+"    "+m.end());
		}
		
		
	}


正则表达式的相关练习与答案

总结:
正则表达式:符合一定规则的表达式
作用:抓们操作字符串
特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。
所以学习正则表达式,就是在学习一些特殊符号的使用。
好处:可以简化对字符串的复杂操作
弊端:符号定义越多,正则就越长,阅读性就越差

练习:

1、去重

需求String str  = "我我...我我我...我我....是....是是是...是是..你你...你你大大大....大大..哥哥哥...哥哥哥";最后输出:我是你大哥

2、ip地址进行排序

String str = "192.168.15.10  127.0.0.1  3.3.3.3  105.77.11.55";
要求排序结果:
	3.3.3.3
	105.77.11.55
	127.0.0.1
	192.168.15.10

3、校验邮箱地址

posted @ 2017-05-30 22:57  Mr、chen  阅读(205)  评论(0编辑  收藏  举报