• regular expression ---正则表达式 --- REGEX 的一些补充


    接着昨天的正则表达式,今天接着做一些补充:

    先上两个练习:

     
    练习:
    1.邮箱格式的校验:
    2607509766@qq.com   langang@163.com   langang@tedu.cn langang@sina.com.cn(只能出现一次com)
    解析:在前面是一个数字字母的6到32个的情形,接着直接写一个@,后面是数字字母的至少一个的情形,接着一个点(需要转义),再前面是一个com(用一个捕获组表示)点后面,直接另一个捕获组(cn)即可,这里可以用到一个 || 将两种情形分开.
    package cn.tedu.regex;
    /**
     * 1.邮箱格式的校验:
    2607509766@qq.com   langang@163.com   langang@tedu.cn langang@sina.com.cn(只能出现一次com)
    
     * @author 唐雕
     *
     */
    public class PatternExer3 {
    
        public static void main(String[] args) {
            
            String email = "iwouuu98489@qq.com";
            
            //用()里面就可以增加一连串的东西了
            System.out.println(email.matches("[a-zA-Z0-9]{6,32}@[a-zA-Z0-9]+(\.com)")
                    || email.matches("[a-zA-Z0-9]{6,32}@[a-zA-Z0-9]+(\.com)?(\.cn)"));
            
        }
        
    }
     
    2.输入一个字符串,统计其中每一个字符出现的次数
    解析:用到字符串的replaceAll(),里面填写一个正则表达式,用空串代替。然后就是原长度-现在长度就是这个字符的次数,输出即可。
    package cn.tedu.regex;
    
    import java.util.Scanner;
    
    /**
     * 5. 输入一个字符串,统计其中每一个字符出现的次数
     * @author 唐雕
     *
     */
    public class PatternExer1 {
    
        public static void main(String[] args) {
            
            Scanner s = new Scanner(System.in);
            String str = s.next();
            
            getCount(str);
            
        }
        
        //这个方法
        public static void getCount(String str){
            
            if(str == null)
                System.out.println("输入不合法!!");
            
            while(str.length() > 0) {
                
                char c = str.charAt(0);
                
                int len = str.length();
                
                str = str.replaceAll("" + c, "");//怎么将一个变量放到正则表达式中?直接用一个连接就是了,返回现在的字符串长度
                
                System.out.print(c + ":" + (len - str.length()) + " ");
                
            }
        }
    }
    3.对于任意的字符串可以认为是由多组叠字或者单字来拼成的,这每一组叠字/单字都是字符串的碎片,计算一个字符串平均的碎片长度
    aaabbbbbcddaaacc -> aaa bbbbb c dd aaa cc -> (3 + 5 + 1 + 2 + 3 + 2)/6 = 2.67
    解析:原长度就是那个,后面就是每一个的个数,同上,也是用到字符串的 replaceOf()方法,只是后面代替就是前面的那个,是一个叠字的情形!!
    package cn.tedu.regex;
    /**
     * 3.对于任意的字符串可以认为是由多组叠字或者单字来拼成的,这每一组叠字/单字都是字符串的碎片,计算一个字符串平均的碎片长度
    aaabbbbbcddaaacc -> aaa bbbbb c dd aaa cc -> (3 + 5 + 1 + 2 + 3 + 2)/6 = 2.67
    
     * @author 唐雕
     *
     */
    public class PatternExer3 {
        
        public static void main(String[] args) {
            
            String str = "aaabbbbbcddaaacc";
            
            //记录字符串的原长度
            int len = str.length();
            //将字符串中叠字替换为单字,然后求出长度,也就是个数
            str = str.replaceAll("(.)\1+", "$1");
            System.out.println(len*1.0/str.length());//绝大部分小数转化为二进制在计算机中进行存储的时候,都会产生舍入误差,
                                                    //所以结果是一连串的小数!!
            
            
        }
        
    /*    //这个方法
        public static double getAverage(String str){
            
            //怎么拆开?
            //碎片个数,将全部的叠字去掉
            
        }*/
        
    }

    好了,好了,好了,先简单回顾一下基础吧!之后在实际开发中,还需要进一步的介绍,下一篇随笔,就开始回顾包装类,数学类和抽象类吧!!

  • 相关阅读:
    Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2)
    Codeforces Round #592 (Div. 2)
    日常杂谈
    vc_redist x64 或者x86下载地址
    windows terminal编译实录
    刷机,twrp,安装xposed
    博客迁移公告
    tcpdump实用笔记
    分享一篇企鹅的暑期实习生技术面经验
    visudo使用笔记
  • 原文地址:https://www.cnblogs.com/tangdiao/p/9494454.html
Copyright © 2020-2023  润新知