正则表达式总结
1、正则表达式概述: 首先是表达式,是一种正确的规则去进行某一种是事物的操作,用于对字符串进行操作的表达式,用于对字符串进行的操作 好处:代码更为简洁、提供了一些符号来表示一些规则,其实这个规则内部还是有具体的代码来完成对字符串操作。简单说:好像是将代码进行封装、用符号进行了替代。 弊端:正因为是符号表示的,所以要记住很多符号的使用,而且符号多了阅读性极差。 eg:对QQ号码进行校验 要求:1、必须是5到15位。 2、必须是数字 3、0不可以开头 String qq="178266871"; String regex="[1-9][0-9]{4,14}";这就是规则,作用在字符串上的规则。 Boolean b=qq.matches(regex); 2、正则表达式常见体现: 其实就是一些常见符号的注解,必须要了解,学习正则,其实就是在学习这些符号的使用。 字符类: [abc]:要是a或者b或者c [^bac]:除了abc什么都行 [a-zA-Z]必须是字母 [a-b[m-p]]:a到b或者m到p 预定义字符: .:任何字符,与行结束符可能匹配也可能不匹配 d:数字[0-9]它是一个符号,不要以为是两个符号,不是转义。 D:非数字[^0-9] s:空白字符 S:非空白 w:单词字符,[a-zA-Z_0-9]字符数字下划线 W:非单词 边界匹配器: b:单词边界
数量词 X?:一次或者一次也没有 X*:没有或有多次 X+:必有有一次或者多次 X{n}:恰好n次 X{n,}:至少n次 X{n,m}:n到m次之间 3、正则表达式常用的功能:(重点) 1、匹配: 其实是用的就是String类中的matches方法,将正则作用到指定的字符串上判断该字符串是否符合规则,返回真假。 public static void checkTel(){ String tel="13802920021"; Boolean b=tel.matches(regex); String regex="1[358][0-9]{9}"; //String regex="1[358]d{9}"; } 注意:在字符串中单代表的是转义字符,所以为了保持原样必须把它表示原样性用来表示。 2、切割: 其实就是使用的是String类中的split方法,将字符串按照指定的规则,变成一个字符数组,凡是参数是regex都是正则。 Eg:切割字符串 public static void splitString(){ String str="lisi.wangwu.zhaoliu"; String regex="."; String[] arr=str.split(regex); for(String s:arr){ System.out.println(s); } } 3、替换: 其实用的是String类中的replaceAll()方法 str="acdxxxxxxshdsYYYYsdahj";叠词替换成一个字 str=str.replaceAll("(.)1+","$1"); 4、获取: 其实就是使用了正则表达式对象,java.util.Pattern. 1、先将正则表达式编译成Pattern对象 2、将Pattern对象将和要匹配的字符串关联,获取对应的匹配器对象。 Matcher 3、通过匹配器对象Matcher对字符串进行操作了。 public static void getString(){ String str="da jia zhu yi le,ming tian bufang jia"; String regex="b[a-z]{3}b";b:单词边界 Pattern p=Pattern,compile(regex); p.mecther(str); Matcher m=p.matcher(str); While(m.find){ System.out.println(.m.group);//group方法可以返回查找到的子序列、 } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |