正则表达式
发布时间:2020-12-13 22:53:09 所属栏目:百科 来源:网络整理
导读:正则表达式: 用于操作 字符串 的一些规则表达式。规则也就是一些符号,被赋予了特定的含义,其实这些符号低层都对应 着一段代码,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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |