字符 |
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 else
112 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 else
129 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 else
146 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 else
163 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 else
180 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 else
197 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 else
214 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 else
231 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 else
248 System.out.println(false);
249 }
250
251 }