黑马程序员--学习笔记--正则表达式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

正则表达式

        通常用于程序设计过程中,对输入数据的格式进行检查,如果匹配正则表达式则数据格式正确,否则格式错误。正则表达式就是用一些特殊符号来表示代码操作,简化对字符串的复杂操作,但是当表达式符号定义的越多,就越难理解,可读性变差。

        关于正则表达式的特殊符号和限定符描述以及更多信息可以上网查找相关资料。

       下面是三个包含正则表达式的String类方法:

  • 判断输入的字符串是否符合正则表达式的方法

boolean matches(String regex)
其中regex: 指定的正则表达式,返回值为boolean类型,若匹配则结果为true

  • 根据指定的正则表达式拆分字符串

String[] split(String regex)
返回值是String类型数组
  • 使用给定的字符串替换某个字符串中所有匹配正则表达式的子字符串

String replaceAll(String regex, String replacement)
replace为替换匹配正则表达式的字符串

       字符串匹配实例:

	boolean IsQQ(){
		String qq = "108949876";
		String regex = "[1-9][0-9]{4,15}";   //qq号正则表达式
		boolean b = qq.matches(regex);       //判断这串号码是否匹配正则表达式
		return b;     //返回true
	}
       字符串拆分实例:

//定义按一定规则分隔数组的函数splitDemo,str:需要匹配的字符串;regex:正则表达式(匹配规则)
splitDemo(String str,String regex){  
		//按正则表达式把字符串分隔,存入数组
		String[] st = str.split(regex);
		//for循环遍历数组
		for(String string: st){
			System.out.println(string);
		}
	}
//调用函数,按照叠词完成切割,此处用到了组的概念,是为了让规则能够重用,把规则用括号括起来,
//并且组的编号从1开始,下面正则表达式的以上就是任意字符为组编号为1出现1次以上
splitDemo("abaabsdfee1223sdfd", "(.)\\1+");

       字符串替换实例:

public static void ipSort(){
		String ip = "192.168.1.254 102.55.33.1 5.6.8.99 33.44.99.7";
		
		//给匹配到的整数前面补两个0
		ip = ip.replaceAll("(\\d+)", "00$1");
		//用组1匹配到的字符串替换符合规则的字符串
		ip = ip.replaceAll("0*(\\d{3})", "$1");
		String[] str = ip.split(" ");
		//把字符串数组添加到TreeSet集合中,实现排序
		TreeSet<String> ts = new TreeSet<String>();
		for(String st : str){
			ts.add(st);
		}
                //最后把零去掉输出排序后的IP
		for(String st1: ts){
			System.out.println(st1.replaceAll("0*(\\d+)", "$1"));
		}
	}
     字符串获取实例:

将字符串中的符合规则的子串取出。

getDemo(){
		String str = "what is your dream, how do you work out it";
		System.out.println(str);
		String reg = "\\b[a-z]{4}\\b";
		
		//将规则封装成对象
		Pattern p = Pattern.compile(reg);
		
		//让正则对象和要作用的字符串通过匹配器关联。获取匹配器对象
		Matcher m = p.matcher(str);
		while(m.find()){    //m.found()结果为真是,表示匹配到
			System.out.println(m.group());       //用于获取匹配后的结果。
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值