加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:53:08 所属栏目:百科 来源:网络整理
导读:正则表达式: 用于操作 字符串 的一些规则表达式。规则也就是一些符号,被赋予了特定的含义,其实这些符号低层都对应 着一段代码,java将这些符号进行了封装而已,这样做无非就是为了便于操作方便书写。 正则表达式对字符串的常见操作,一共分四种。 1.匹配


正则表达式:

用于操作字符串的一些规则表达式。规则也就是一些符号,被赋予了特定的含义,其实这些符号低层都对应 着一段代码,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****$3");//封装成3个组。
	  	
System.out.println(newStr);</span>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读