正则表达式
一:了解
- 在Java中 "\\"表示“我要插入一个正则表达式的反斜线,所以其后的字符具有特殊意义”。
- 如果想插入一个普通的反斜线,则应该这样"\\\\",不过制表符和换行符之类的东西只需要使用单反斜线:\n 、\t.
- ?:可以表示可能的情况。比如 -?表示可能有一个负号在最前面(也可能没有,但不能出现+开头)
二:基础
1. 字符
| 字符 | 字符 |
| B |
指定字符B |
| \xhh |
十六进制为0xhh的字符 |
| \uhhhh |
十六进制为0xhhhh的Unicode字符 |
| \t |
制表符Tab |
| \n |
换行符 |
| \r |
回车 |
| \f |
换页 |
| \e |
z转义 |
2. 字符类
| | |
| . (小圆点) |
任意字符 |
| [abc] |
同a |
| [^abc] |
除了abc之外的任何字符 |
| [a-zA-Z] |
从a-z或从A-Z的任何字符 |
| [abc[hij]] |
同a |
| [a-z&&[hij]] |
任意hi或j |
| \s |
空白符(空格、tab、换行符、换页、回车) |
| \S |
非空白符同[^\s] |
| \d |
数字[0-9] |
| \D |
非数字[^0-9] |
| \w |
词字符[a-zA-Z0-9] |
| \W |
|
3. 逻辑操作符
| | |
| XY |
Y跟在X后面 |
| X |
Y |
| (X) |
捕获组。可以在表达式中\i引用第i个捕获组 |
4. 边界匹配符
| | |
| ^ |
一行的起始 |
| $ |
一行的结束 |
| \b |
词的边界 |
| \B |
非词的边界 |
| \G |
前一个匹配的结束 |
5. 量词
- 贪婪型:为所有可能的模式发现更多的匹配。若模式只能匹配到第一个可能的字符组,因为它是贪婪的,所以会继续向下匹配。
- 勉强型:用问号来指定用于匹配满足模式所需的最少字符数。(最少匹配的、非贪婪的)
- 占有型:用于防止正则表达式失控
.
注意:X必须用()括起来
| 贪婪型 | 勉强型 | 占有型 | 如何匹配 |
| X? |
X?? |
X?+ |
零个或一个X |
| X* |
X*? |
X*+ |
零个或多个X |
| X+ |
X+? |
X++ |
一个或多个X |
| X{n} |
X{n}? |
X{n}+ |
恰好n次X |
| X{n,} |
X{n,}? |
X{n,}+ |
至少n次X |
| X{n,m} |
X{n,m}? |
X{n,m}+ |
X至少n次,且不超过m次 |
正则表达式
原文:http://www.cnblogs.com/0427mybirthday/p/7668926.html