zoukankan      html  css  js  c++  java
  • JAVA正则表达式

    一、常用的符号

    .  表示任意一个字符

    s  空格字符(空格键、tab、换行、换页、回车)

    S  非空格字符([^s])

    d  一个数字,(相当于[0-9])

    D  一个非数字的字符,(相当于[^0-9])

    w  一个单词字符(word character)(相当于[a-zA-Z_0-9])

    W  一个非单词的字符,[^w]

    ^  一行的开始

    $  一行的结尾

      一个单词的边界

    B  一个非单词的边界

    G  前一个匹配的结束

    []  匹配方括号内的一个字符,例如:[abc]表示字符a,b,c中的任意一个(与a|b|c相同),[a-zA-Z]表示从a到z或A到Z当中的任意一个字符

    二、表示次数的符号

    *  重复零次或更多次,例如:a*匹配零个或者多个a

    +  重复一次或更多次,例如:a+匹配一个或者多个a

    ?  重复零次或一次,例如:a?匹配零个或一个a

    {n}  重复n次,例如:a{4}匹配4个a

    {n,}  重复n次或更多次,例如:a{4,}匹配至少4个a

    {n,m}  重复n到m次,例如:a{4,10}匹配4-10个a

    package com.yangbo.examples;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class RegexTest {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            Pattern p = null;    //正则表达式
            Matcher m = null;    //操作的字符串
            boolean b = false;    
            
            //正则表达式表示首字母是a,中间是任意字符,结尾以b结束
            p = Pattern.compile("a*b");
            m = p.matcher("baaaaab");
            b = m.matches();
            System.out.println("匹配结果:"+b);//输出  false
            
            //字符串匹配的返回
            p = Pattern.compile("\d+");
            m = p.matcher("aaa2223bb11222");
            while(m.find()){
                System.out.println(m.start());//第一个循环返回3,第二个循环返回9
                System.out.println(m.end());//第一个循环返回7,第二个循环
                System.out.println(m.group());//第一个循环返回2233,第二循环个返回11222
            }
            
            //groupCount、group()、group(n)
            p = Pattern.compile("\w(\d\d)(\w+)");
            m = p.matcher("aa11bbb");
            if(m.find()){
                int count = m.groupCount();    //返回匹配组的数目,而不是匹配字符串的数目
                for(int i=0;i<=count;i++){
                    System.out.println("group "+i+" :"+m.group(i));
                }
            }
            
            //分割字符串(split()方法)
            p = Pattern.compile("\d+");
            String str[] = p.split("aa11bbb33cc55gg");
            for(int i=0;i<str.length;i++){
                System.out.println(str[i]);
            }
            /*
             * 返回结果如下
             * aa
             * bbb
             * cc
             * gg
             */
            
            //字符串替换(replaceAll()方法)
            p = Pattern.compile("\d+");    //将所含数字全部替换为XX
            m = p.matcher("aa11bbb33cc55gg");
            String s = m.replaceAll("XX");
            System.out.println(s);
            /*
             * 返回结果如下
             * aaXXbbbXXccXXgg
             */
            
            //字符串替换2(appendReplacement()方法及appendTail()方法)
            p = Pattern.compile("55");
            m = p.matcher("aa11bbb33cc55gg55yy");
            StringBuffer sb = new StringBuffer();
            while(m.find()){
                m.appendReplacement(sb, "@@");
            }
            System.out.println(sb.toString());//打印aa11bbb33cc@@gg@@
            m.appendTail(sb);//将最后一次替换后的字符串加上
            System.out.println(sb.toString());//打印aa11bbb33cc@@yy
            
        }
    
    }
  • 相关阅读:
    Maven的pom文件依赖提示 ojdbc6 Missing artifact,需要手动下载并导入maven参考
    Maven全局配置文件settings.xml详解(转)
    SpringBoot -- 项目结构+启动流程
    64匹马,8个赛道,找出前4名最少比赛多少场?——最快10次,最慢11次;
    Spring家族主流成员介绍
    java 中文与unicode互转
    Netty的Marshalling编解码器
    解决svn迁移过程中出现:SVN Error: is not the same repository as的问题
    netty入门实例
    Dubbo的使用及原理
  • 原文地址:https://www.cnblogs.com/jingyunyb/p/3443030.html
Copyright © 2011-2022 走看看