1符号
预定义字符类
. 任何字符
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z0-9_]
\W 非单词字符:[^\w]
Greedy 数量词(++为正无穷大)
X? X,[0,1]
X* X,[0,++]
X+ X,[1,++]
X{n} X,n
X{n,} X,[n,++)
X{n,m} X,[n,m]
范围表示
[abc] a、b或c(简单类)
[^abc]任何字符,除了a、b或c(否定)
[a-zA-Z]a到z或A到Z,两头的字母包括在内(范围)
2匹配
.matches()
例:
regex_qqnumber = [1-9][0-9]{5,10}
regex_email = [a-zA-Z1-9]\\w*@[a-zA-Z1-9]\\w*(\\.(com|cn|net))+
3切割
.split(regex)
4替换
.replaceAll(regex,str)
例:
str = "aaddddfgeeeeqttt";
newstr = str.repalceAll("(.)\\1+","$1"); //$1表示第一个(.)所匹配的字符
System.out.println(newstr);
5获取
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
.find()
.group()
例:
需求:获取由3个字母组成的单词。
String str = "da jia zhu yi le,ming tian bu fang jia,xie xie!";
String regex = "\\b[a-z]{3}\\b"; // \\b匹配单词边界,即单词和符号之间的边界。单词可以是中文字符,英文字符,数字;符号可以是中文符号,英文符号,空格,制表符,换行
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while(m.find())
{
System.out.println(m.group());
}