字符类:
[abc] a,b,或者c
[^abc] 任何字符,除了a,b,c
[a-zA-Z] a到或A到Z (范围)
[a-d[m-p]] a到d或m到p,等效于[a-dm-p]去(取的是并集)
[a-z&&[def]] 等效与[def],取的是[a-z]与[def]的交集,[a-z]中包含[def],所以结果也就是[def]
[a-z&&[^bc]] a到z,除了b和c,等效于[ad-z]
[a-z&&[^m-p]] a到z,而非m到p,除了m到p。
注意:[ ]代表单个字符
预定义字符类:
. 任意字符
\d 数字: 等于[0-9] \D 非数字,等于[^0-9]
\w 单词字符 等于[a-zA-Z_0-9] \W非单词字符,等于[^\w]
\s 空白字符:[ \t\n\x0B\f\r] \S 非空白自符, 等于[^\s] (6个自符,开头是个空格)
Greedy 数量词
? 一次或一次也没有
* 零次或多次(也包括一次,就是零次到多次)
+ 一次或多次(就是不包括0次)
{n} 恰好n次
{n, } 至少n次
{n,m} 至少n次,至少m次
String类的功能:
1.split(String regex) 通过正则表达式切割字符,注意转义字符,想用点. 切割,要写\\. 因为点是正则表达式中的特殊字符,所以要写成\. 而\是Java中的转义字符,所以要写\\, 所以结果就是\\. 。
2.replaceAll(String regex,String replacement) 替换功能
3.获取功能,Pattern和Mather的结合使用
String s = "abc18212437890fdfd13709874567"; String regex="1[3578]\\d{9}"; Patten p = Patten.compile(regex); Mather m = P.matcher(s); while(m.find()) { System.out.println(m.group()); }