1.预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字:[^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
2.Greedy 数量词
X? X,一次或一次也没有
X* X,零次或者多次
X+ X,一次或者多次
X{n} X,恰好n次
X{n,} X,至少n次
X{n,m} X,至少n次,但是不超过m次
3.范围词
[abc] a,b,或c(简单类)
[^abc] 任何字符。除了a,b或c
[a-zA-Z] a到z或A到Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d,e或f(交集)
注意:范围词里面不管有多长,没有数量词的配合都只能匹配一个字符而已。
4.正则表达式主要是用于操作字符串的规则,正则表达式对字符的操作主要有以下几种应用:
匹配 matches():
切割 split():
替换 replaceAll(String regex, String replacement):
**查找**:
指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的正则对象
匹配任意的字符串用于创建
Matcher对象,执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享一同模式。
因此,典型的调用顺序是:
Pattern p = Pattern.compile("正则");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
查找需要使用的对象:
1.Pattern(正则对象)
2.Matcher(匹配器对象)
匹配器要使用的方法:
1.find()
2.group()
注意:使用group方法的时候一定要先调用find方法让匹配器去查找符合规则的字符串,否则报错。
单词边界匹配器
\b 单词边界匹配器只是代表了单词的开始或者是结束部分,不匹配任何的字符。
例如:
public class Demo1 {
public static void main(String[] args) {
//找出三个字母组成的单词
String content = "da jia de jia qi wan bi liao hai kai xin ma";
String reg = "\\b[a-zA-Z]{3}\\b";
//先要把字符串的正则编译成Pattern对象。
Pattern p = Pattern.compile(reg);
//使用正则对象匹配字符串产生一个Matcher对象。
Matcher m = p.matcher(content);
while(m.find()){
System.out.println(m.group());
}
}
}