x | 字符x(x可代表任何合法的字符) |
\0mnn | 8进制数0mnn所表示的字符 |
\xhh | 16进制值0xhh所表示的字符 |
\uhhhh | 16进制值0xhhhh所表示的UNICODE字符 |
\t | 制表符('\u0009') |
\n | 新行(换行)符('\u000A') |
\r | 回车符('\u000D') |
\f | 换页符('\u000C') |
\a | 报警(bell)符('\u0007') |
\e | Escape符('\u001B') |
\cx | 对应的的控制符。例如,\cM :匹配Ctrl-M。x值必须为A-Z或a-z之一。 |
在正则表达式中,特殊的字符具有特殊的含义
想要在表达式中表示字符本身,需要用反斜杠“\\”,进行转义
$ | 匹配一行的结尾。要匹配 $ 字符本身,请使用 \$ |
^ | 匹配一行的开头。要匹配 ^ 字符本身,请使用 \^ |
( ) | 标记子表达式的开始和结束位置。要匹配这些字符,请使用 \( 和 \) |
[ ] | 用于确定中括号表达式的开始和结束位置. |
{ } | 用于标记前面子表达式的出现频度,要匹配这些字符,请使用 \{ 和 \} |
* | 指定前面子表达式可以出现零次或多次。要匹配 * 字符,请使用 \* |
+ | 指定前面子表达式可以出现一次或多次。要匹配 + 字符,请使用 \+ |
? | 指定前面子表达式可以出现零次或一次。要匹配 ? 字符,请使用 \? |
. | 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \. |
\ | 用于转义下一个字符,或指定八进制、十六进制字符。如果需匹配 \,请用\\ |
| | 指定两项之间任选一项,如果要匹配 | ,请使用 \| |
预定义字符 | 说明 |
. | 可以匹配任何字符 |
\d | 匹配0~9的所有数字 |
\D | 匹配非数字 |
\s | 匹配所有空白字符,包括空格、制表符、回车符、换页符、换行符等 |
\S | 匹配所有非空白字符 |
\w | 匹配所有单词字符,包括0~9所有数字,26个英文字母和下划线(_) |
\W | 匹配所有非单词字符 |
上面的7个预定义字符其实很容易记忆:
d是 digit的意思,
代表数字 s是space的意思,
代表空白 w是 word 的意思,
代表单词 d、s、w的大写形式恰好匹配与之相反的字符
在一些特殊情况下,例如,若只想匹配a~f的字母,或者匹配除了ab之外的所有小写字母,或者匹配中文字符,预定义字符就无能为力了,此时就需要使用方括号表达式 所有的中文字符unicode值是连续的,匹配所有的中文字符: [\\u4e00-\\u9fa5] 一个方括号表达式,表示的是一个字符
方括号表达式 | 说明 |
表示枚举 | 例如[abc],表示a、b、c其中任意一个字符;[gz]表示g、z其中的任意一个字符 |
表示范围:- | 例如[a-f],表示a~f范围内的任意字符;[\\u0041-\\u0056]表示十六进制字符\u0041到\u0056范围的字符。范围可以和枚举结合使用,如[a-cx-z],表示a~c、x~z范围内的任意字符 |
表示求否:^ | 例如:[^abc],表示非a、b、c的任意字符;[^a-f]表示不是a~f范围内的任意字符 |
表示“与”运算:&& | 例如[a-z&&[def]],求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] |
表示“并”运算 | 并运算与前面的枚举类似。 如[a-d[m-p]],表示[a-dm-p] |
数量标识符
贪婪模式 | 勉强模式 | 占有模式 | 说明 |
X? | X?? | X? + | X表达式出现零次或一次 -> x{0,1} |
X* | X*? | X*+ | X表达式出现零次或多次 |
X+ | X+? | X++ | X表达式出现一次或多次 |
X{n} | X{n} ? | X{n} + | X表达式出现出现n次 |
X{n,} | X{n,} ? | X{n,} + | X表达式最少出现n次 |
x{n,m} | x{n,m} ? | x{n,m} + | X表达式最少出现n次,最多出现m次 |
当从“”hello , java!“字符串中查找匹配”“\w*”子串时,因为“”\w*“使用了贪婪模式,数量表示符(*)会一直匹配下去,所以该字符串前面的所有单词字符都被它匹配到,直到遇到非单词,所以替换后的效果是“*, java!“
如果使用勉强模式,数量表示符(*)会尽量匹配最少字符,即匹配0个字符,所以替换后的结果是“*hello , java!”
边界匹配符 | 说明 |
^ | 行的开头 |
$ | 行的结尾 |
\b | 单词的边界,匹配非单词 |
\B | 非单词的边界,匹配单词 |