正则表示式这个东东,不常用,但是每过一段时间肯定会用到。我这个小脑袋又记得不长久,所以写点东西,下次查询使用。
何为正则表达式?
正则表达式就是一个用于匹配字符串的模板。创建正则表达式就是创建一个特殊的字符串,可以匹配一批的字符串。
正则表达式的组成
正则表达式的合法字符
字符 | 说明 |
---|---|
x | 字符x(字符x代表任何合法的字符) |
\0mnm | 八进制数0mnm所表示的字符 |
\xhh | 十六进制数0xhh所表示的字符 |
\uhhhh | 十六进制数0xhhhh所表示的Unicode字符 |
\t | 制表符('\u0009') |
\n | 新行(换行)符('\u000A') |
\r | 回车符('\u000D') |
\f | 换页符('\u000C') |
\a | 报警(bell)符('\u0007') |
\e | Escape符('\u001B') |
\cx | x对应的控制符。例如,\cM匹配Ctrl+M。x的必须为A-Z或者a-z之一 |
除此以外,正则表达式还有一些特殊字符,这些字符在正则表达式中有特殊的用途。如果需要匹配这些特殊的字符,必须先将这些字符转义。转义的方法是在需要转义的字符前加一个\
。
正则表达式的特殊字符
特殊字符 | 说明 | |
---|---|---|
$ | 匹配一行的结尾 | |
^ | 匹配一行的开头 | |
() | 标记子表达式的开始和结束位置 | |
[] | 用于确定中括号表达式的开始和结束位置 | |
{} | 用于标记前面子表达式的出现频度 | |
* | 指定前面子表达式可以实现零次或多次 | |
+ | 指定前面子表达式可以出现一次或多次 | |
? | 指定前面子表达式可以出现零次或一次 | |
. | 匹配除换行符\n之外的任意单字符 | |
\ | 用于转义下一个字符,或指定八进制、十六进制字符 | |
\ | 指定两项之间仍选一项 |
正则表达式中的预定义字符
预定义字符 | 说明 |
---|---|
. | 可以匹配任意字符 |
\d | 匹配0-9的所有数字 |
\D | 匹配非数字 |
\s | 匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等 |
\S | 匹配所有的非空白字符 |
\w | 匹配所有的单词字符,包括0-9所有数字、26个英文字母和下划线(_) |
\W | 匹配所有的非单词字符 |
记忆技巧:d代表digit,s代表space,w代表word,大写代表匹配与之相反的字符。
方括号表达式
表达式 | 说明 |
---|---|
枚举 | [abc],表示a、b、c中的任意一个字符 |
范围 | [a-f],表示a-f之间的任意一个字符 |
取反 | 1,表示除了a、b、c之外的任意字符 |
与运算:&& | [a-c&&[b-d]]表示取a-c和b-d的交集,代表b、c |
并运算 | 与枚举类似,[a-c[d-d]],代表[a-d] |
- abc ↩