正则表达式


正则表达式:

                 用于操作字符串的一些规则表达式。规则也就是一些符号,被赋予了特定的含义,其实这些符号低层都对应 着一段代码,java将这些符号进行了封装而已,这样做无非就是为了便于操作方便书写。

正则表达式对字符串的常见操作,一共分四种。

1.匹配。

使用的是String类中的matches()。

<span style="font-size:18px;">//匹配演示。
	String str="aooz";
	/*
	 *Greedy 数量词
	 *o?:一个或没有 .
	 *o+:一个或多个。
	 *o*:一个没有或多个。
	 */
	String regex="ao*z";
boolean b=	str.matches(regex);

//校验QQ号
//5-15位
//不能以开头
//必须全是数字
String qq="123456789";
String regex2="[1-9][\\d]{4,14}";
boolean b2 =qq.matches(regex2);

	
System.out.println(qq+"::"+b2);</span>

 
2.切割。 

使用的是String类中的split()。

<span style="font-size:18px;">	//切割演示
    private static void splitDemo() {
		//把数字切出来
//    	String str="23 34    56 11 22 33";
//    	String[] arr=str.split(" +");//+,一个或多个
       
    	//\\. -->\\是转义-->\也是转义-->.
    	//在正则中.有特定含义,代表的是任意字符。
//    	String str="hbb.hy.college";
//    	String[] arr=str.split("\\.");
    	
    	//使用叠词来切,叠词:qq zzz vvvv
    	String str="dfsflkdsfqqdfsafkiozzzkdfasfasvvvvkdfl";
    	//.是代表任意字符,()是封装成一组的意思。捕获组。
    	//\\1-->转义成1.意欲为引用前面哪一组。
    	//+:一个或多个。详情查阅API.
    	String[] arr=str.split("(.)\\1+");
    	for(String s :arr)
			System.out.println(s);
	}</span>

3.替换。

使用的是String类中的replaceAll()。

<span style="font-size:18px;">//	替换演示
	private static void replaceAllDemo() {
		//将叠词替代成一个,qq-->q  zzz-->z vvvv-->v
//	  	String str="dfsflkdsfqqdfsafkiozzzkdfasfasvvvvkdfl";
//	  	String newStr=str.replaceAll("(.)\\1+", "$1");//后一个参数可以通过$数字来引用前一个参数的组。
		
		//加密手机号码:如 18316699418 -->183****9418
		String str="18316699418";
		String newStr=str.replaceAll("(\\d{3})(\\d{4})(\\d{4})", "$1****$3");//封装成3个组。
	  	
System.out.println(newStr);
	}</span>

4.获取

<span style="font-size:18px;">//	获取演示。
private static void getDemo() {
	/*
	 * 很遗憾String类中没有提供相对应的方法,所以必须使用到一个Pattern类,Pattern是一个正则对象。
	 * 其实String类中那些用到正则的方法,也是间接调用这个Pattern类的方法。
	 */
	String str="i believe i can fly,this is regex demo ";
    String regex="\\b[a-z]{3}\\b";
	//1.将正则表达式编译成Pattern对象
    Pattern p =Pattern.compile(regex);
    //2.通过p的matcher方法获取相对应的Matcher匹配器对象。得到Matcher匹配器是为了得到更广泛的应用。
     Matcher m=p.matcher(str);
    //3.通过匹配器对象的方法将正规则表达式作用于字符串。
     while(m.find()){//匹配到规则的内容 返回true
    	 //m.group(),得到内容
    	 //m.start(),开始位置
    	 //m.end(),结束位置,
    	 //注意:包含头不包含尾。
    	 System.out.println(m.start()+":::"+m.group()+":::"+m.end());
     }
	}
//	替换演示
	private static void replaceAllDemo() {
		//将叠词替代成一个,qq-->q  zzz-->z vvvv-->v
//	  	String str="dfsflkdsfqqdfsafkiozzzkdfasfasvvvvkdfl";
//	  	String newStr=str.replaceAll("(.)\\1+", "$1");//后一个参数可以通过$数字来引用前一个参数的组。
		
		//加密手机号码:如 18316699418 -->183****9418
		String str="18316699418";
		String newStr=str.replaceAll("(\\d{3})(\\d{4})(\\d{4})", "$1****$3");//封装成3个组。
	  	
System.out.println(newStr);</span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值