符号:
x.任意一个字符
x* 0或多个
x+ 1或多个
x? 0或1个
正则表达式比java表达加一个\
\\.匹配. java:\.
\\\\匹配\ java:\\
[a-z]{3}匹配a-z 三个
[abc]匹配其中一个
[^abc]匹配除其中的
[a-zA-Z] = [a-z] | [A-Z] = [a-z[A-z]]或
[A-Z&&[RFG]]和
^开头^h
$结尾ir$
\d[0-9]一个数字
\D[^0-9]
\s[\t\n\xOB\f\r]
\S[^\s]
\w[a-zA-Z_0-9]
\W[^\w]
\b单词边界
X{n}n次
X{n,}至少n次
X{n,m}至少n,不超过m次
函数:
p("abc".matches("..."));
=
P("a345a".replaceAll("\\d","-"));替换
Pattern p=Pattern.compile("[a-z]{3}"); //编译,效率高
Matcher m = p.matcher("fgh");
p(m.matches());
//Matcher()匹配整个字符串,匹配的字符被吃掉,包括不匹配的那个
P(m.find());
//find()找到一个子串,并在主串去掉,可继续再找
m.reset();//字符恢复
P(m.lookingAt());
//lookingAt()从开始的位置开始找子串
P(m.start() + ”-” + m.end);
//start();找子串的起始位置,未找到报错
//end();找子串的结束位置,未找到报错
Pattern p=Pattern.compile("java",Pattern.CASE_INSENSITIVE);//忽略大小写
Matcher m = p.matcher("fgh");
m.replaceAll(“JAVA”);//替换,返回字符串
Pattern p=Pattern.compile("java",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("java javA");
while(m.find())
System.out.println(m.group());//打印匹配的串
//奇数替换为小写,偶数大写
StringBuffer buf=new StringBuffer();
Int i=0;
While(m.find()){
I++;
If (i%2==0)
m.appendReplacement(buf,”java”);
else
m.appendReplacement(buf,”JAVA”);
}
m.appendTail(buf);
P(buf);
//分组
Pattern p=Pattern.compile(“(\\d{3,5})([a-z]{2})”);
Matcher m = p.matcher("123aaa-34345bb-234cc-00");
while(m.find());
System.out.println(m.group(1));//打印第一组匹配的串,即找到后打印 123
统计换行符:
P(“ \n”.match(“^[\\s&&[^\\n]]*\\n$”))
匹配e-mail:
P(“ adffsf.Com”.match(“[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+”))