黑马程序员--学习笔记--正则表达式

来源:互联网 发布:网络教育怎么查学籍 编辑:程序博客网 时间:2024/05/17 05:07

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

正则表达式

        通常用于程序设计过程中,对输入数据的格式进行检查,如果匹配正则表达式则数据格式正确,否则格式错误。正则表达式就是用一些特殊符号来表示代码操作,简化对字符串的复杂操作,但是当表达式符号定义的越多,就越难理解,可读性变差。

        关于正则表达式的特殊符号和限定符描述以及更多信息可以上网查找相关资料。

       下面是三个包含正则表达式的String类方法:

  • 判断输入的字符串是否符合正则表达式的方法

boolean matches(String regex)
其中regex: 指定的正则表达式,返回值为boolean类型,若匹配则结果为true

  • 根据指定的正则表达式拆分字符串

String[] split(String regex)
返回值是String类型数组
  • 使用给定的字符串替换某个字符串中所有匹配正则表达式的子字符串

String replaceAll(String regex, String replacement)
replace为替换匹配正则表达式的字符串

       字符串匹配实例:

boolean IsQQ(){String qq = "108949876";String regex = "[1-9][0-9]{4,15}";   //qq号正则表达式boolean b = qq.matches(regex);       //判断这串号码是否匹配正则表达式return b;     //返回true}
       字符串拆分实例:

//定义按一定规则分隔数组的函数splitDemo,str:需要匹配的字符串;regex:正则表达式(匹配规则)splitDemo(String str,String regex){  //按正则表达式把字符串分隔,存入数组String[] st = str.split(regex);//for循环遍历数组for(String string: st){System.out.println(string);}}//调用函数,按照叠词完成切割,此处用到了组的概念,是为了让规则能够重用,把规则用括号括起来,
//并且组的编号从1开始,下面正则表达式的以上就是任意字符为组编号为1出现1次以上splitDemo("abaabsdfee1223sdfd", "(.)\\1+");

       字符串替换实例:

public static void ipSort(){String ip = "192.168.1.254 102.55.33.1 5.6.8.99 33.44.99.7";//给匹配到的整数前面补两个0ip = ip.replaceAll("(\\d+)", "00$1");//用组1匹配到的字符串替换符合规则的字符串ip = ip.replaceAll("0*(\\d{3})", "$1");String[] str = ip.split(" ");//把字符串数组添加到TreeSet集合中,实现排序TreeSet<String> ts = new TreeSet<String>();for(String st : str){ts.add(st);}                //最后把零去掉输出排序后的IPfor(String st1: ts){System.out.println(st1.replaceAll("0*(\\d+)", "$1"));}}
     字符串获取实例:

将字符串中的符合规则的子串取出。

getDemo(){String str = "what is your dream, how do you work out it";System.out.println(str);String reg = "\\b[a-z]{4}\\b";//将规则封装成对象Pattern p = Pattern.compile(reg);//让正则对象和要作用的字符串通过匹配器关联。获取匹配器对象Matcher m = p.matcher(str);while(m.find()){    //m.found()结果为真是,表示匹配到System.out.println(m.group());       //用于获取匹配后的结果。}}


0 0