zoukankan      html  css  js  c++  java
  • .Net转Java自学之路—基础巩固篇十八(正则)

    正则表达式:

      正则就是用于操作字符串的规则。其中是以一些符号来标识规则。

      字符类:

        [] :范围  - :连接符  ^ :非

      预定义字符类:

        . :任何字符  

        d :数字  D :非数字

        s :空白字符  S :非空白字符

        w :单词字符  W:非单词字符

      边界匹配器:

        ~ :行开头  $ :行结尾   :单词边界

      组:

        ()

        当组进行嵌套时可以通过从左到右来计算其开括号来编号。组0代表的是整个表达式

        实例:(.)\1+

        为了提高规则复用,用()进行封装,每个括号都是一个编号,从1开始

        为了复用这个规则,可以通过编号来完成该规则的调用。需要对编号数字进行转义。\1就代表获取1组规则

      基本功能:

        匹配:

          str.matches("正则");

        切割:

          str.split("正则");

        替换:

          str.replaceAll("正则");

        获取:

          使用正则对象Pattern和匹配器Matcher

    //范例:
    //先将正则表达式编译成正则对象。使用的是Pattern类的一个静态方法。Compile(regex)
    Pattern p=Pattern.compile("a*b");//a和b之间可以有字符也可以没有
    
    //让正则对象和要操作的字符串相关联,通过matcher方法来完成,并返回匹配器对象
    Matcher m=p.matcher("aaaab");
    
    //通过匹配器对象的方法将正则模式作用到字符串上让字符串进行针对性的功能操作
    boolean b=m.matches();
    
    //将规则对字符串进行查找
    while(m.find()){
        //将查找的内容进行获取。group()只获取不查找,一次只获取一个,故要循环处理
        m.group();
        //第二种方式获取:获取值序列 m.start(); m.end();
        str.substring(m.start(),m.end());
    }

    实例:

    //正则邮箱校验
    public boolean checkMail(String mail){
        String reg="[0-9a-zA-Z_]+@[0-9a-zA-Z]+(\.[a-zA-Z]+)+";
        retrun mail.matches(reg);
    }
    //叠词还原:
    public String showStr(String str){
        str=str.replaceAll("字符串中出现的符号","");
        retrun str.replaceAll("(.)\1","$1");
    }
    //IP排序:
    public void sortIp(String ips){
        //补0
        ips=ips.replaceAll("(\d+)","00$1");
        ips=ips.replaceAll("0*(\d{3})","$1");
        String[] iplist=ips.split(" +");
        TreeSet<String> ts=new TreeSet<String>();
        for(String str : iplist){
            ts.add(str);
        }
        for(String str : ts){
            str.replaceAll("0*(\d+)","$1");//去除0
        }
    }
    //爬虫:
    public void getContentByWeb(String regex){
        URL url=new URL(地址);
        URLConnection conn=url.openConnection();
        BufferedReader bufIn=new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line=null;
        Pattern p=Pattern.compile(regex);
        while((line=bufIn.readLine())!=null){
            Matcher m=p.matcher(line);
            while(m.find()){
                m.group();
            }
        }
    }
  • 相关阅读:
    python中xrange和range的异同
    Python:使用threading模块实现多线程编程
    python Queue模块
    Python中pass语句的作用
    Python的作用域
    eclipse颜色配置
    protobuf
    python调试总结
    chardet安装
    Windows下搭建PHP开发环境
  • 原文地址:https://www.cnblogs.com/zltao/p/10383823.html
Copyright © 2011-2022 走看看