美文网首页
Java正则表达式

Java正则表达式

作者: chad_it | 来源:发表于2016-11-30 21:05 被阅读99次

    正则表达式(regex)

    • 定义:用有固定意义的字符(元字符)描述一种字符串匹配规则的字符串
    • 元字符及常见规则写法:
    - -
    \\\ 转义字符,输出一个\
    () 括号内表示一个整体
    . 任何单个字符
    \d 匹配0-9的一个数字
    \D 非数字
    \w 匹配数字、大小写字母、以及_
    \W 匹配除了\w以外的字符
    \s 空白字符、空格、\t\n
    \S 非空白字符
    [abc] abc中的任意一个字母
    [^abc] 任何字符除了a、b、c
    [a-z] 匹配a-z小写字母
    [a-z][A-Z] 匹配a-z,A-Z的字母
    [0-3][7-9] 匹配0-3或者7-9的数字
    ? 1次或0次
    * 0次或多次
    + 1次或多次
    {n} 恰好n次
    {n, } 至少n次
    {n, m} 至少n次,单不超过m次
    \\1 表示使用正则表达式中第一括号()中的表达式
    $1 表示取第一个括号()中的表达式匹配的内容

    纯数字
    [0-9]+ "\\d+"
    合法的电话号码
    "1[3578][0-9]{9}" "1[3578]\\d{9}"
    重复出现的字符
    "(.)\\1{1, }"

    完全匹配

        //多次使用同一个正则表达式
        //创建一个正则表达式的对象
        Pattern pattern = Pattern.compile(regex);
        //创建匹配对象
        Matcher matcher = pattern.matcher(string);
        //结果
        boolean  = matcher.matchers();
        
        String string = "he   was     hello";
        String[] stringArray = string.split(" ");
        System.out.println(Arrays.toString(stringArray));
        
        stringArray = string.split("\\s+");
        System.out.println(Arrays.toString(stringArray));
        
        //判断是否是合法的手机号
        string = "12345678901";
        boolean isAllNum = string.matches("1[3578][0-9]{9}");
        System.out.println(isAllNum);
            
        //根据正则表达式替换指定内容
        string = "fjdklsaj:dfjklsj djfklsa:34219490 jfkdls:dhkjas ";
        String newString = string.replaceAll("[0-9]{8}", "*****");
        System.out.println(newString);
        
        string = "aaaahahhhhkjklssss";
        // \1 表示使用正则表达式中第一括号()中的表达式
        // $1表示取第一个括号()中的表达式匹配的内容
        newString = string.replaceAll("(.)\\1{1,}", "$1");
        System.out.println(newString);
    

    全局搜索

        //创建一个正则表达式的对象
        Pattern p = Pattern.compile("\\w+@\\w+(\\.\\w{2,3})");
        //创建匹配器对象
        Matcher matcher = p.matcher("1109846929@qq.com");
        //查找是否存在匹配的内容
        while(matcher.find()) {
            //获取匹配的内容
            System.out.println(matcher.group());
            //表示正则表达式中第一个括号()里匹配的内容
            System.out.println(matcher.group(1));
        }
    

    相关文章

      网友评论

          本文标题:Java正则表达式

          本文链接:https://www.haomeiwen.com/subject/dggkpttx.html