字符
x 字符 x
<tt>\\</tt> 反斜线字符
<tt>\0</tt>n 带有八进制值 <tt>0</tt> 的字符 n (0 <tt><=</tt> n <tt><=</tt> 7)
<tt>\0</tt>nn 带有八进制值 <tt>0</tt> 的字符 nn (0 <tt><=</tt> n <tt><=</tt> 7)
<tt>\0</tt>mnn 带有八进制值 <tt>0</tt> 的字符 mnn(0 <tt><=</tt> m <tt><=</tt> 3、0 <tt><=</tt> n <tt><=</tt> 7)
<tt>\x</tt>hh 带有十六进制值 <tt>0x</tt> 的字符 hh
<tt>\u</tt>hhhh 带有十六进制值 <tt>0x</tt> 的字符 hhhh
<tt>\t</tt> 制表符 (<tt>'\u0009'</tt>)
<tt>\n</tt> 新行(换行)符 (<tt>'\u000A'</tt>)
<tt>\r</tt> 回车符 (<tt>'\u000D'</tt>)
<tt>\f</tt> 换页符 (<tt>'\u000C'</tt>)
<tt>\a</tt> 报警 (bell) 符 (<tt>'\u0007'</tt>)
<tt>\e</tt> 转义符 (<tt>'\u001B'</tt>)
<tt>\c</tt>x 对应于 x 的控制符
字符类
<tt>[abc]</tt> <tt>a</tt>、<tt>b</tt> 或 <tt>c</tt>(简单类)
<tt>[^abc]</tt> 任何字符,除了 <tt>a</tt>、<tt>b</tt> 或 <tt>c</tt>(否定)
<tt>[a-zA-Z]</tt> <tt>a</tt> 到 <tt>z</tt> 或 <tt>A</tt> 到 <tt>Z</tt>,两头的字母包括在内(范围)
<tt>[a-d[m-p]]</tt> <tt>a</tt> 到 <tt>d</tt> 或 <tt>m</tt> 到 <tt>p</tt>:<tt>[a-dm-p]</tt>(并集)
<tt>[a-z&&[def]]</tt> <tt>d</tt>、<tt>e</tt> 或 <tt>f</tt>(交集)
<tt>[a-z&&[^bc]]</tt> <tt>a</tt> 到 <tt>z</tt>,除了 <tt>b</tt> 和 <tt>c</tt>:<tt>[ad-z]</tt>(减去)
<tt>[a-z&&[^m-p]]</tt> <tt>a</tt> 到 <tt>z</tt>,而非 <tt>m</tt> 到 <tt>p</tt>:<tt>[a-lq-z]</tt>(减去)
预定义字符类
<tt>.</tt> 任何字符(与行结束符可能匹配也可能不匹配)
<tt>\d</tt> 数字:<tt>[0-9]</tt>
<tt>\D</tt> 非数字: <tt>[^0-9]</tt>
<tt>\s</tt> 空白字符:<tt>[ \t\n\x0B\f\r]</tt>
<tt>\S</tt> 非空白字符:<tt>[^\s]</tt>
<tt>\w</tt> 单词字符:<tt>[a-zA-Z_0-9]</tt>
<tt>\W</tt> 非单词字符:<tt>[^\w]</tt>
Greedy 数量词
X<tt>?</tt> X,一次或一次也没有
X<tt>*</tt> X,零次或多次
X<tt>+</tt> X,一次或多次
X<tt>{</tt>n<tt>}</tt> X,恰好 n 次
X<tt>{</tt>n<tt>,}</tt> X,至少 n 次
X<tt>{</tt>n<tt>,</tt>m<tt>}</tt> X,至少 n 次,但是不超过 m 次
Reluctant 数量词
X<tt>??</tt> X,一次或一次也没有
X<tt>*?</tt> X,零次或多次
X<tt>+?</tt> X,一次或多次
X<tt>{</tt>n<tt>}?</tt> X,恰好 n 次
X<tt>{</tt>n<tt>,}?</tt> X,至少 n 次
X<tt>{</tt>n<tt>,</tt>m<tt>}?</tt> 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 }