zoukankan      html  css  js  c++  java
  • 5String的正则表达式

    正则表达式(Pattern类):

    提供大量的用于匹配字符串的规则以及语法

    java.util.regex 工具包下

    1.

            String str="abc";//待匹配的字符串
            //1.指定匹配规则
            Pattern p=Pattern.compile("abc");//匹配只有abc的字符串
            //2.关联待匹配的字符串 --输入要匹配的字符串
            Matcher m=p.matcher(str);
            //3.进行匹配
            System.out.println(m.matches());

    2.

        String str="abc";//待匹配的字符串
        System.out.println(str.matches("abc"));

    正则规则:

    [] 里面内容任取一个[abc],也可以表示范围,任取一个[0-9]

    + 去控制前面的字符出现的次数,最少出现一次

    ?去控制前面的字符出现的次数 ,最多出现一次

    *去控制前面的字符出现的次数 可以不出现也可以出现多次

    字符{数值} -----表明字符串只出现了字符的数值于出现的次数,很精确的那种

    {n,m} 出现的次数是n到m范围之内

    {n,}出现的次数连续的最小是n次  {,n}这个是不行的,可能会有负数

    ()捕获组 \n就是捕获组的编号 

    System.out.println(str.matches(".*(ab).*\1.*"));

    捕获组的编号---从( 就开始编号   

    (a(c(d)e)b)f(g)

    编号

    1         a(c(d)e)b

    2          c(d)e

    3            d

    4             g

        String str="chk";
            //匹配abc/cfh/lkn 每一组任取一个组成的字符串
            System.out.println(str.matches("[abc][cfh][lkn]"));//true
            //匹配除x/u/k之外的字符串 ,[] 里面的内容任取一个  表示范围,任取一个 
            System.out.println(str.matches("[^xuk]"));//true
            //d表示的是任意的数字,但是字符串要转义一次,所以是\d,字符串转义好给正则就是d
            String str2="1";
            System.out.println(str2.matches("\d"));
            //. 任意字符
            String str3="i";
            System.out.println(str3.matches("."));
    
            //匹配点 \. 字符串转义后. 正则转义后.
            String str4=".";
            System.out.println(str4.matches("\."));
    
            //匹配      \\-字符串转义 \ 正则表达式转义\ 这个字符串自身的转义
            String str5="\";
            System.out.println(str5.matches("\\"));
            //匹配/t
            String str6="	";
            System.out.println(str6.matches("	")); //这种不是\的,可以用	,\t,\	匹配
            //Demo 1 匹配开头是数字,结尾是小写英文字母,最少3个字符组成的字符串
            System.out.println(str6.matches("[0-9].+[a-z]")); 
            //Demo2 匹配小写英文字母开头,数字结尾,最多3个字符组成的字符
            System.out.println(str6.matches("[a-z].?\d")); 
            //Demo3 匹配以abc中任意一个开头,以数字结尾的字符串
            System.out.println(str6.matches("[abc].*\d")); 
            //Demo4 匹配aaaaa的字符串
            System.out.println(str6.matches("a{5}"));
            //Demo5 字符最少出现5次 没有最大区间a{,5},会去到负数所以不允许,最小区间是可以的
            System.out.println(str6.matches("a{5,}"));
            //{n,m} 字符出现的次数是n到m范围之内
            System.out.println(str.matches("a{1,5}"));

     7

             String str="a_es24441gab";
             System.out.println(str.replaceAll("\d", "*"));//a_es*****gab

    []------\[]   \[\]                           [165165]------------- \[|\]

            //输出每个字符出现的个数;
             String str="a_es24441gab";
             while(str.length()>0)
             {  
                 int length=str.length();
                 //获取第一个字符
                 char a=str.charAt(0);
                 //判断是否是特殊字符,这个需要转义的
                 
                str=str.replaceAll(a+"",""); 
                 System.out.println(a+" :"+(length-str.length()));
    
                 
             }
        }

    捕获组和使用捕获组不在一个表达式中只能用&n去使用其他的捕获组

     String str="TOM441JERRY";
             System.out.println(str.replaceAll("(TOM)(.*)(JERRY)", "$3$2$1"));
             String str2="abab";
             String str="我我我爱爱爱学学学习习习";
             System.out.println(str.replaceAll("(.)\1+(.)\2+(.)\3+(.)\4+", "$1$2$3$4"));//我爱学习
             System.out.println(str.replaceAll("(.)+(.)+(.)+(.)+", "$1$2$3$4"));//学习习习
             System.out.println(str.replaceAll("(.*)\1+", "$1"));//我爱学习
             System.out.println(str2.matches(".*(ab).*\1")); //true

    叠词好为一组

    8.splite 

         String str="966我我我244爱爱爱1学学学9习习习899";
             System.out.println(str.replaceAll("(.)\1*", "$1"));//96我24爱1学9习89
    //以匹配到的信息(分隔符)进行分割生成一个字符串数组
             //分隔符在字符串首字符就切出个空串,在后面就切掉了
             //如果前面出现多少个切割符就切除多少个空串,后面的还是全切掉
             //如果切割符在中间出现多次也会切出多个空串
             String[] ss=str.split("\d");
            System.out.println(Arrays.toString(ss)); //[, , , 我我我, , , 爱爱爱, 学学学, 习习习]
  • 相关阅读:
    爬虫框架scrapy(1)持久化存储的多种方式及多页爬取数据
    爬虫之selenium
    redis相关
    爬虫之数据解析
    爬虫之requests模块2
    爬虫之requests模块
    HTTP和HTTPS协议
    Pymongo使用
    MongoDB
    python网络编程之黏包问题
  • 原文地址:https://www.cnblogs.com/xuwangqi/p/11190231.html
Copyright © 2011-2022 走看看