描述的是一个规则,匹配一类字符串
1. 示例
[Ji]ava.+
匹配第一个字母是J或j,接下来三个三个字母是ava,其余部分由一个或多个任意的字符构成
[Jj], [0-9] 表示一个范围,所有Unicode值落在两个边界范围内的字符
[^] 表示补集
2. 转义字符
符号 |
描述 |
\n |
换行符 |
\t |
制表符 |
\\ |
\ |
\^ ,\$ ,\. ,\( ,\) ,\{ ,\} ,\? ,\+ ,\- ,\[ ,\] ,| |
匹配\后字符本身 |
3. 标准字符
字符 |
描述 |
\d |
0-9数字 |
\w |
字母,数字,下划线 A-Z,a-z,0-9 |
\s |
空格,制表符,换行符等空白字符的其中任意一个 |
. |
任意字符 |
4. [] 内任意字符
字符 |
描述 |
[ab5@] |
匹配 a或b或c或5或@ |
[^abc] |
a,b,c以外的任意字符 |
[f-k] |
f-k之间的任意字母 |
[^A-F0-3] |
A-F,0-3之外的任意字符 |
包含在中括号中的特殊符号会失去特殊意义,除了^,-之外。
如[\d.\-+]
表示数字,小数点,-,+
5. 量词
字符 |
描述 |
{n} |
表达式重复n次 |
{m,n} |
重复至少m次,至多n次 |
{m,} |
重复至少m次 |
? |
0次或1次,{0,1} |
+ |
至少1次,{1,} |
* |
不出现或出现任意次,{0,} |
6. 字符边界
字符 |
描述 |
^ |
与字符串开始的地方匹配 |
$ |
与字符串结束的地方匹配 |
\b |
匹配一个单词边界, (前面的字符和后面的字符不全是\w) |
7. 选择符和分组
字符 |
描述 |
| |
两个表达式之间或 关系 |
() |
括号内的表达式可以作为整体被修饰,()\1表示捕获的整体作为匹配模式 go gogo |
(?:表达式) |
抵消()带来的作用 |
8. 预搜索-零宽断言
字符 |
描述 |
(?=exp) |
断言后匹配exp [a-z]+(?:\d) go222 222本身不计入匹配 |
(?<=exp) |
断言前匹配exp |
(?!exp) |
断言后不匹配exp |
(?<!exp) |
断言前不匹配exp |
9. 常用表达
9.1. 电话号码
1 2
| 0\d{2-3}-\d{7,9} 1[356789]\d{11}
|
9.2. 邮箱
1 2 3 4
| 12334@qq.com 234@sina.com.cn
[\w\-]+@[A-Za-z0-9]+(\.[A-Za-z]{2,3}){1,2}
|
10. java中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.util.regex.Matcher; import java.util.regex.Pattern;
Pattern pattern = Pattern.compile("\\d");
Matcher matcher = pattern.matcher("aw");
boolean flag =matcher.matches(); System.out.println(flag);
boolean bool = matcher.find();
String str = matcher.group(0);
String str = matcher.replaceAll("#");
Stream<String> stream = pattern.splitAsStream("输入字符串");
|