正则表达式
实质就是字符串匹配,也就是字符匹配
- 常用方法 (matches 返回的是一个布尔型变量)
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
常用的字符()
- | . | 匹配除换行符以外的任意字符
- | \r | 匹配一个回车符
- | […] | 可自己指定字符范围,对应位置是字符集中任意字符
- 例如 [1,2] 表示这个字符可以是1,或者2
数量词
- | * | 匹配前面的子表达式零次或多次
- | + |匹配前面的子表达式一次或多次
| ? | 匹配前面的子表达式零次或一次
| {m} | 匹配前一个字符m次
- | {m,n} | 匹配前一个字符m次至n次
边界字符
- | ^ | 放在开头则表示匹配输入字符串的开始位置,若放在方括号表达式中使用,表示取反,不接受该字符集合
- | $ | 匹配输入字符串的结尾位置
- | \b | 匹配单词的开始或结束
预定义字符集
- | \d | 匹配数字
- | \D | 匹配非数字 [ \d ]
- | \s | 匹配任意的空白符
- | \w | 匹配字母或数字或下划线或汉字 [A-Za-z0-9_]
- | \W | 匹配非单词字符
- 匹配特殊字符时要转义,java要两个斜杠\
- . 特殊字符在中括号表达式时 如 [.] 只会匹配 .字符,等价于 \.
逻辑,分组
- | (…) | 分组表达式,括号中的即为表达式。整个作为整体,后可接数量词,表示匹配次数
- | 代表左右表达式任意匹配一个,先匹配左,左成功则跳过右
- 例如 abc|def , 可匹配abc 或 def
- 如果| 没有被包括在()中,则它的范围是整个正则表达式