正则表达式
来源:互联网 发布:淘宝店铺刷流量有用吗 编辑:程序博客网 时间:2024/06/03 23:42
正则表达式
符合一定规则的表达式。
作用:用于专门操作字符串。
特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。
所以学习正则表达式,就是在学习一些特殊符号的使用。
好处:可以简化对字符串的复杂操作。
弊端:符号定义越多,正则越长,阅读性越差。
1 替换
String replaceAll(regex,str);
如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组。
public class replace { public static void main(String[] args) { String str = "wer1389980000t12y1234564uiod234345675f";// 将字符串中的数组替换成#。 //将连续超过5个的数字替换成# replaceAllDemo(str,"\\d{5,}","#"); String str1 = "erkktyqqquizzzzzo";// 将叠词替换成#. //将重叠的字符替换成单个字母。zzzz->z replaceAllDemo(str1, "(.)\\1+", "$1"); } public static void replaceAllDemo(String str, String reg, String newStr) { str = str.replaceAll(reg, newStr); System.out.println(str); }}
2 切割
String split();
public class split { public static void main(String[] args) { //按照 "." 分割,注意要用\\转义,\\一般成对出现。 splitDemo("zhangsan.lisi.wangwu","\\."); //按照"\\"分割,第一个\用\\,第二个\用\\。 splitDemo("c:\\abc\\a.txt","\\\\"); //按照叠词完成切割。 //为了可以让规则的结果被重用,可以将规则封装成一个组。用()完成,组的出现都有编号,从1开始。 //想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。 splitDemo("erkktyqqquizzzzzo","(.)\\1+"); } public static void splitDemo(String str,String reg) { //String reg = " +";//按照多个空格来进行切割 String[] arr = str.split(reg); System.out.println(arr.length); for(String s : arr) { System.out.println(s); } }}
3 匹配
String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
public class check { public static void main(String[] args) { demo(); checkTel(); checkQQ(); } public static void demo() { String str = "b23a23456789"; String reg = "[a-zA-Z]\\d*"; boolean b = str.matches(reg); System.out.println(b); } /* * 匹配 手机号段只有 13xxx 15xxx 18xxxx */ public static void checkTel() { String tel = "16900001111"; String telReg = "1[358]\\d{9}"; System.out.println(tel.matches(telReg)); } /* * 对QQ号码进行校验 要求:5~15 0不能开头,只能是数字 * * 这种方式,使用了String类中的方法,进行组合完成了需求。但是代码过于复杂。 */ public static void checkQQ() { String qq = "123a454"; String regex = "[1-9]\\d{4,14}"; boolean flag = qq.matches(regex); if (flag) System.out.println(qq + "...is ok"); else System.out.println(qq + "... 不合法"); } //传统方式 public static void checkQQ_1() { String qq = "1882345a0"; int len = qq.length(); if (len >= 5 && len <= 15) { if (!qq.startsWith("0"))// Integer.parseInt("12a");NumberFormatException { try { long l = Long.parseLong(qq); System.out.println("qq:" + l); } catch (NumberFormatException e) { System.out.println("出现非法字符......."); } } else { System.out.println("不可以0开头"); } } else { System.out.println("长度错误"); } }}
4 获取:将字符串中的符合规则的子串取出。
操作步骤:
1,将正则表达式封装成对象。
2,让正则对象和要操作的字符串相关联。
3,关联后,获取正则匹配引擎。
4,通过引擎对符合规则的子串进行操作,比如取出。
import java.util.regex.*;class find { public static void main(String[] args) { getDemo(); } public static void getDemo() { String str = "ming tian jiu yao fang jia le ,da jia。"; System.out.println(str); String reg = "\\b[a-z]{4}\\b";// \b单词边界 //将规则封装成对象。 Pattern p = Pattern.compile(reg); //让正则对象和要作用的字符串相关联。获取匹配器对象。 Matcher m = p.matcher(str);// boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。// System.out.println(b);// System.out.println(m.group());//用于获取匹配后结果。 while(m.find()) { System.out.println(m.group()); System.out.println(m.start()+"...."+m.end()); } }}
0 0
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 直方图学习使用
- 运算符优先级
- ffmpeg 笔记 一
- java小游戏-坦克大战,事后总结
- 如何改变Javascript在页面的执行顺序
- 正则表达式
- 升级ZC451 codebase遇到的问题以及解决方法
- Eclipse编译调试Cocos2d问题汇总
- mybatis+springMvc
- DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC宏
- poj-1840 Eqs 暴力+哈希
- DataGirdView嵌套mdi中样式影响后的解决方案
- Android实战简易教程-第三十八枪(模仿腾讯QQ的网络状态提示和设置功能实现)
- 101Symmetric Tree