规则
| 正则表达式 | 规则 | 可以匹配 |
|---|
| A | 指定字符 | A |
| \u548c | 指定Unicode字符 | 和 |
| . | 除\n外的任意字符 | a,b,&,0 |
| \d | 数字0~9 | 0~9 |
| \w | 大小写字母,数字和下划线 | a~z,A~Z,0~9,_ |
| \s | 空格、Tab键 | 空格,Tab |
| \D | 非数字 | a,A,&,_,…… |
| \W | 非\w | &,@,中,…… |
| \S | 非\s | a,A,&,_,…… |
| 正则表达式 | 规则 | 可以匹配 |
|---|
| A* | 任意个数字符 | 空,A,AA,AAA,…… |
| A+ | 至少1个字符 | A,AA,AAA,…… |
| A? | 0个或1个字符 | 空,A |
| A{3} | 指定个数字符 | AAA |
| A{2,3} | 指定范围个数字符 | AA,AAA |
| A{2,} | 至少n个字符 | AA,AAA,AAAA,…… |
| A{0,3} | 最多n个字符 | 空,A,AA,AAA |
| 正则表达式 | 规则 | 可以匹配 |
|---|
| ^ | 开头 | 字符串开头 |
| $ | 结尾 | 字符串结束 |
| [ABC] | […]内任意字符 | A,B,C |
| [A-F0-9xy] | 指定范围的字符 | A~F,0~9,x,y |
| [^A-F] | 指定范围外的任意字符 | 非A~F |
| AB | CD | EF |
cases
- 用于判断目标串中是否含有模式串
@Test
public void test(){
String pattern1 = "A+";
boolean m1 = Pattern.matches(pattern1, "AAA");
String pattern2 = "\\w*";
boolean m2 = Pattern.matches(pattern2, "AAAa ");
String pattern3 = "\\s+";
boolean m3 = Pattern.matches(pattern3, " ");
String pattern4 = "A{5,10}";
boolean m4 = Pattern.matches(pattern4, "AAAAA");
String pattern5 = "^a.*B$";
boolean m5 = Pattern.matches(pattern5, "a123B");
String pattern6 = "\\d{9,11}@[a-z]{2,10}.[^a][a-z]{1,2}";
boolean m6 = Pattern.matches(pattern6, "123456789@qq.com");
}
- 用于提取模式串
String paterrn7 = "(\\d*)@.*";
Pattern pattern = Pattern.compile(paterrn7);
Matcher matcher = pattern.matcher("123456789@qq.com");
if (matcher.find()){
String totalGroup = matcher.group(0);
System.out.println(totalGroup);
for(int i = 1; i <= matcher.groupCount();i++){
System.out.println(matcher.group(i));
}
}
- 贪婪模式与非贪婪模式
可以认为贪婪模式是从目标串的右侧向左侧查找模式串,非贪婪模式是从左向右查找
Pattern pattern9 = Pattern.compile("(.*b).*");
Matcher matcher9 = pattern9.matcher("aabaabcc");
if (matcher9.find()){
System.out.println(matcher9.group(1));
}
Pattern pattern10 = Pattern.compile("(.*?b).*");
Matcher matcher10 = pattern10.matcher("aabaabcc");
if (matcher10.find()){
System.out.println(matcher10.group(1));
}
markdown语法
-
表格
表头|表头|表头
---|:--:|---:
内容|内容|内容
内容|内容|内容
-
下标
A0
A<sub>0</sub>