字符 |
x | 字符 x |
\\ | 反斜线字符 |
\0n | 带有八进制值 0 的字符 n (0 <= n <= 7) |
\0nn | 带有八进制值 0 的字符 nn (0 <= n <= 7) |
\0mnn | 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) |
\xhh | 带有十六进制值 0x 的字符 hh |
\uhhhh | 带有十六进制值 0x 的字符 hhhh |
\t | 制表符 ('\u0009') |
\n | 新行(换行)符 ('\u000A') |
\r | 回车符 ('\u000D') |
\f | 换页符 ('\u000C') |
\a | 报警 (bell) 符 ('\u0007') |
\e | 转义符 ('\u001B') |
\cx | 对应于 x 的控制符 |
字符类 |
[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(交集) |
[a-z&&[^bc]] | a 到 z,除了 b 和 c:[ad-z](减去) |
[a-z&&[^m-p]] | a 到 z,而非 m 到 p:[a-lq-z](减去) |
预定义字符类 |
. | 任何字符(与可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
Greedy 数量词 |
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{ n} | X,恰好 n 次 |
X{ n,} | X,至少 n 次 |
X{ n,m} | X,至少 n 次,但是不超过 m 次 |
Reluctant 数量词 |
X?? | X,一次或一次也没有 |
X*? | X,零次或多次 |
X+? | X,一次或多次 |
X{ n}? | X,恰好 n 次 |
X{ n,}? | X,至少 n 次 |
X{ n,m}? | X,至少 n 次,但是不超过 m 次 |
例子
1 package com.xiaostudy; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 public class MyPattern { 7 8 public static void main(String[] args) { 9 } 10 11 private static void demo_Reluctant() { 12 // 检验规则,单个字母,“+”表示:0次或多次,后面多加一个“?”与不加的区别是:不加的话表示只匹配一次,加的话表示匹配多次 13 String regex = ".+?222"; 14 // 要检验的对象 15 String str = "xx222xx222xx222xx222"; 16 // 编译正则表达式 17 Pattern pattern = Pattern.compile(regex); 18 // 创建匹配器,给定输入与此模式的匹配 19 Matcher matcher = pattern.matcher(str); 20 while (matcher.find()) 21 System.out.println(matcher.start() + "=====" + matcher.end()); 22 // 匹配,返回结果 23 boolean b = matcher.matches(); 24 if (b) 25 System.out.println(true); 26 else 27 System.out.println(false); 28 } 29 30 private static void demo_aBAb() { 31 // 检验规则,字母集,“+”表示:0个或多个 32 String regex = "[abcd]+"; 33 // 要检验的对象 34 String str = "adbcdbaDACDBDAC"; 35 // 编译正则表达式,不区分大小写 36 Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); 37 // 创建匹配器,给定输入与此模式的匹配 38 Matcher matcher = pattern.matcher(str); 39 // 匹配,返回结果 40 boolean b = matcher.matches(); 41 if (b) 42 System.out.println(true); 43 else 44 System.out.println(false); 45 } 46 47 private static void demo_abcd() { 48 // 检验规则,字母集,“+”表示:0个或多个 49 String regex = "[abcd]+"; 50 // 要检验的对象 51 String str = "adbcdabdcddbadbc"; 52 // 编译正则表达式 53 Pattern pattern = Pattern.compile(regex); 54 // 创建匹配器,给定输入与此模式的匹配 55 Matcher matcher = pattern.matcher(str); 56 // 匹配,返回结果 57 boolean b = matcher.matches(); 58 if (b) 59 System.out.println(true); 60 else 61 System.out.println(false); 62 } 63 64 private static void demo_123no() { 65 // 检验规则,非数字集,“+”表示:0个或多个 66 String regex = "[^1-9]+";// 等价于\\D+ 67 // 要检验的对象 68 String str = "+sdoi#$@%@#"; 69 // 编译正则表达式 70 Pattern pattern = Pattern.compile(regex); 71 // 创建匹配器,给定输入与此模式的匹配 72 Matcher matcher = pattern.matcher(str); 73 // 匹配,返回结果 74 boolean b = matcher.matches(); 75 if (b) 76 System.out.println(true); 77 else 78 System.out.println(false); 79 } 80 81 private static void demo_123() { 82 // 检验规则,数字集,“+”表示:0个或多个 83 String regex = "[1-9]+";// 等价于\\d+ 84 // 要检验的对象 85 String str = "123"; 86 // 编译正则表达式 87 Pattern pattern = Pattern.compile(regex); 88 // 创建匹配器,给定输入与此模式的匹配 89 Matcher matcher = pattern.matcher(str); 90 // 匹配,返回结果 91 boolean b = matcher.matches(); 92 if (b) 93 System.out.println(true); 94 else 95 System.out.println(false); 96 } 97 98 private static void demo_2() { 99 // 检验规则,单个数字100 String regex = "[1-9]";101 // 要检验的对象102 String str = "2";103 // 编译正则表达式104 Pattern pattern = Pattern.compile(regex);105 // 创建匹配器,给定输入与此模式的匹配106 Matcher matcher = pattern.matcher(str);107 // 匹配,返回结果108 boolean b = matcher.matches();109 if (b)110 System.out.println(true);111 else112 System.out.println(false);113 }114 115 private static void demo_nm() {116 // 检验规则,单个字母,“{n,m}”表示:出现n次到m次之间,包括他们本身117 String regex = "x{3,5}";118 // 要检验的对象119 String str = "xxxxx";120 // 编译正则表达式121 Pattern pattern = Pattern.compile(regex);122 // 创建匹配器,给定输入与此模式的匹配123 Matcher matcher = pattern.matcher(str);124 // 匹配,返回结果125 boolean b = matcher.matches();126 if (b)127 System.out.println(true);128 else129 System.out.println(false);130 }131 132 private static void demo_n0() {133 // 检验规则,单个字母,“{n,}”表示:出现n次或以上134 String regex = "x{3,}";135 // 要检验的对象136 String str = "xxxx";137 // 编译正则表达式138 Pattern pattern = Pattern.compile(regex);139 // 创建匹配器,给定输入与此模式的匹配140 Matcher matcher = pattern.matcher(str);141 // 匹配,返回结果142 boolean b = matcher.matches();143 if (b)144 System.out.println(true);145 else146 System.out.println(false);147 }148 149 private static void demo_n() {150 // 检验规则,单个字母,“{n}”表示:就出现n次151 String regex = "x{3}";152 // 要检验的对象153 String str = "xxx";154 // 编译正则表达式155 Pattern pattern = Pattern.compile(regex);156 // 创建匹配器,给定输入与此模式的匹配157 Matcher matcher = pattern.matcher(str);158 // 匹配,返回结果159 boolean b = matcher.matches();160 if (b)161 System.out.println(true);162 else163 System.out.println(false);164 }165 166 private static void demo_xxx0() {167 // 检验规则,单个字母,“+”表示:0次或多次168 String regex = "x+";169 // 要检验的对象170 String str = "xxx";171 // 编译正则表达式172 Pattern pattern = Pattern.compile(regex);173 // 创建匹配器,给定输入与此模式的匹配174 Matcher matcher = pattern.matcher(str);175 // 匹配,返回结果176 boolean b = matcher.matches();177 if (b)178 System.out.println(true);179 else180 System.out.println(false);181 }182 183 private static void demo_xxx() {184 // 检验规则,单个字母,“*”表示:一次或多次185 String regex = "x*";186 // 要检验的对象187 String str = "xxx";188 // 编译正则表达式189 Pattern pattern = Pattern.compile(regex);190 // 创建匹配器,给定输入与此模式的匹配191 Matcher matcher = pattern.matcher(str);192 // 匹配,返回结果193 boolean b = matcher.matches();194 if (b)195 System.out.println(true);196 else197 System.out.println(false);198 }199 200 private static void demo_x_01() {201 // 检验规则,单个字母,“?”表示:一次或一次都没有202 String regex = "x?";203 // 要检验的对象204 String str = "x";205 // 编译正则表达式206 Pattern pattern = Pattern.compile(regex);207 // 创建匹配器,给定输入与此模式的匹配208 Matcher matcher = pattern.matcher(str);209 // 匹配,返回结果210 boolean b = matcher.matches();211 if (b)212 System.out.println(true);213 else214 System.out.println(false);215 }216 217 private static void demo_00() {218 // 检验规则,单个字母,“.”表示:任何字符219 String regex = ".";220 // 要检验的对象221 String str = "x";222 // 编译正则表达式223 Pattern pattern = Pattern.compile(regex);224 // 创建匹配器,给定输入与此模式的匹配225 Matcher matcher = pattern.matcher(str);226 // 匹配,返回结果227 boolean b = matcher.matches();228 if (b)229 System.out.println(true);230 else231 System.out.println(false);232 }233 234 private static void demo_x() {235 // 检验规则,单个字母236 String regex = "x";// 等价于\\w、[a-z]237 // 要检验的对象238 String str = "x";239 // 编译正则表达式240 Pattern pattern = Pattern.compile(regex);241 // 创建匹配器,给定输入与此模式的匹配242 Matcher matcher = pattern.matcher(str);243 // 匹配,返回结果244 boolean b = matcher.matches();245 if (b)246 System.out.println(true);247 else248 System.out.println(false);249 }250 251 }