正则表达式
String类提供了下面几个方法来使用正则表达式
matches(String regex)
replaceAll(String regex, String replacement)
replaceFirst(String regex, String replacement)
split(String regex)
$ 一行的结尾
^ 一行的开头
() 子表达式的开始和结束位置
[] 括号表达式的开始和结束位置
{} 前面子表达式的出现频度
* 0+
+ 1+
? 0||1
. 匹配除了换行符\n之外的任何单字符
/ 用于转义下一个字符
| 两者任选一项
x 字符x(x可以是任意合法字符)
\0mmm 八进制数0mmm所表示字符
\xhh 十六进制0xhh所表示字符
\uhhhh 十六进制0xhhhh所表示Unicode字符
\t 制符表
\f 换页符
\n 换行符
\r 回车符
\a 报警符
\cx X对应控制符\cM匹配Ctrl-M
“\u0041\\” 匹配A\
“\u0061\t” 匹配a<制表符>
“\?\[” 匹配?[
. 匹配任何字符
\d 匹配0~9任何字符 digital
\D 匹配非数字
\s 所有空白字符,包括空格、制表符、回车符、换页符、换行符等 space
\S 所有非空白字符
\w 所有单词字符,包括0~9所有数字,26个英文字符和下画线(_) word
\W 所有非单词字符
圆括号可以使用或运算符
((public)|(protected)|(private))
方括号表达式:
表示枚举 [abc],abc中任意一个字符
表示范围:- [\\u0041-\\u0061]十六进制字符\u0041到\u0061任意字符。[a-cx-z]
表示求否:^ [^abc],非abc任意字符
表示"与"运算:&& [a-z&&[^bc]]表示[a-d]
表示"并"运算 并运算和前面的枚举类似。例如[a-d[m-p]]表示[a-dm-p]
边界匹配符
^ 行的开头
$ 行的结尾
\b 单词的边界 border
\B 非单词的边界
\A 输入的开头
\G 前一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符
\z 输入的结尾
数量表示符默认匹配贪婪模式,勉强模式用问号后缀(?)表示,只会匹配最少的字符。
X? X表达式出现0次或1次
X* X表达式出现0次或多次
X+ X表达式出现1次或多次
X{n} X表达式出现n次
X{n,} X表达式出现至少n次
X{n,m} X表达式至少出现n次,至多出现m次
使用正则表达式
Pattern对象时正则表达式编译后在内存中的表示形式。正则表达式字符串会先被编译成Pattern对象,然后再利用Pattern对象创建对应的Matcher对象。执行匹配所涉及的状态保留在Matcher对象中,多个Matcher对象可共享同一个Pattern对象。
Matcher类的find(),group()可以从目标字符串中依次去除特定子串,例如互联网的网络爬虫。
Matcher还有几个常用方法:
start();
end();
lookingAt();
matches();
reset();