JAVA正则表达式

一、常用的符号

.  表示任意一个字符

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

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

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

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

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

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

^  一行的开始

$  一行的结尾

\b  一个单词的边界

\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
        
    }

}

 

 

 

 

 

 

posted on 2013-11-26 12:34  jingyunyb  阅读(709)  评论(0编辑  收藏  举报