码迷,mamicode.com
首页 > 编程语言 > 详细

.Net转Java自学之路—基础巩固篇十八(正则)

时间:2019-02-15 17:30:36      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:巩固   edr   符号   计算   正则表达   compile   tin   line   pen   

正则表达式:

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

  字符类:

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

  预定义字符类:

    . :任何字符  

    \d :数字  \D :非数字

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

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

  边界匹配器:

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

  组:

    ()

    当组进行嵌套时可以通过从左到右来计算其开括号来编号。组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();
        }
    }
}

 

.Net转Java自学之路—基础巩固篇十八(正则)

标签:巩固   edr   符号   计算   正则表达   compile   tin   line   pen   

原文地址:https://www.cnblogs.com/drop/p/10383823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!