一、常用的符号
. 表示任意一个字符
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 } }