正则表达式的应用--匹配

看 黑马java 视频 所做笔记。

正则表达式主要是用来操作字符串的,用一些特定的符号来表示一些代码的操作。

正在表达式的作用:

1.匹配:String matches方法,用规则匹配整个字符串,只要有一处不符合规则,就匹配失败,返回false。

public class QQDemo {


	public static void main(String[] args) {


		/*
		 * 需求 校验qq是否合法 qq长度在5-12位之间 qq不能0开头 qq都是数字
		 */


		String qq = "133456";
		// 第一个字符范围在1-9之间
		// 第二个字符是数字0-9之间
		// {}表示第二个字符出现的次数至少4次,最多14次
		String regex = "[1-9]\\d{4,14}";
		checkQQ(qq, regex);


	}


	private static void checkQQ(String qq, String regex) {
		boolean flag = qq.matches(regex);
		if (flag) {
			printOut("qq " + qq);
		} else {
			printOut("qq不合法...");
		}
	}

2.切割:String split

	private static void splitDemo() {
		// TODO Auto-generated method stub
		/*
		 * String str = "hello  world"; String regex = " +"; 按照多个空格切割
		 */

		/*
		 * String str = "hello.world"; String regex="\\."; 在正则表达式里面表示一个单独的.
		 */

		/*
		 * String str = "c:\\abc\\a.txt"; String regex="\\\\"; "\" 将会把后面的"转义
		 */

		String str = "decccccccccsdiiiiqieggggge";
		String regex = "(.)\\1+"; // 按照叠词完成切割,为了可以让规则可以重用,可以将规则封装成一个组,用()完成,从1开始
									// 想要使用已有的组,可以通过 \n 的形式获取,n就是组的编号.
									// 第一位为任意字符,第二位拿的是第一位的结果
		String[] att = str.split(regex);
		for (String s : att) {
			printOut(s);
		}
	}

3.替换:String replaceall

	private static void replaceDemo() {
		
/*		String str="afdfd184485fddddfdfa1dfdfdf15";
		String regex="\\d{5,}";
		str=str.replaceAll(regex, "f");//连续超过5个或5个以上就替换
*/		
		String str="abbcdeeeefghlllm";
		String regex="(.)\\1+";
	//	str=str.replaceAll(regex, "#");//将叠词替换成#
		str=str.replaceAll(regex, "$1");//$1 表示拿前面获取的第一个组
		printOut(str);
		
	}

4.获取,将字符串中符合规则的字符串取出

操作步骤:1.将正则表达式封装成对象。

                      2.让正则对象和要操作的字符串对象相关联。

                     3.关联后,获取正则匹配引擎。

                     4.通过引擎对符合规则的字符串进行操作,比如,取出。

private static void getDemo() {
		// TODO Auto-generated method stub
		String str = "ming tian jiu yao fang jia la !";
		String regex = "\\b[a-z]{3}\\b"; // \\b 单词的边界
		// 将规则封装成对象
		Pattern p = Pattern.compile(regex);
		// 让正则对象和相作用的字符串关联,获取匹配器对象
		Matcher m = p.matcher(str);
		/*
		 * m.matches();//其实string matches方法,用的就是pattern 和 matcher对象来完成
		 * //只不过被string对象封装后,用起来比较简单,功能单一
		 */
		while (m.find()) // 将规则作用于字符串上,并进行符合规则的字符串查找。
		{
			printOut(m.group());// group用于获取匹配后的结果
			printOut(m.start() + "......." + m.end());
		}
	}


练习:邮箱匹配

        

	private static void checkEmail() {
		// TODO Auto-generated method stub
		String email="dfd@qq.com";
		String regex="\\w+@\\w+(\\.\\w+){1,3}";
		printOut(email.matches(regex)+"");
		
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值