正则表达式常用元字符
摘自《正则表达式必知必会(修订版)》,做此整理,以便查阅。
目录:
基本的元字符
| 元字符 | 说明 |
|---|
| . | 匹配任意单个字符 |
| | | 逻辑或运算符 |
| [ ] | 匹配该字符集合中的一个字符 |
| [^] | 排除该字符集合 |
| - | 定义一个范围(例如[A-Z]) |
| \ | 对下一个字符转义 |
量词元字符
| 元字符 | 说明 |
|---|
| * | 匹配前一个字符(子表达式)的零次或多次重复 |
| *? | *的懒惰型版本 |
| + | 匹配前一个字符(子表达式)的一次或多次重复 |
| +? | +的懒惰型版本 |
| ? | 匹配前一个字符(子表达式)的零次或一次 |
| {n} | 匹配前一个字符(子表达式)的n次重复 |
| {m,n} | 匹配前一个字符(子表达式)的至少m次且至多n次重复 |
| {n, } | 匹配前一个字符(子表达式)的n次或更多次重复 |
| {n, }? | {n, }的懒惰型版本 |
注 : 量次*、+、?是贪婪的,会一次尽可能多的匹配更多字符
懒惰型版本量词在第一次匹配时就会停下
位置元字符
| 元字符 | 说明 |
|---|
| ^ | 匹配字符串的开头 |
| \A | 匹配字符串的开头 |
| $ | 匹配字符串的结尾 |
| \z | 匹配字符串的结尾 |
| \< | 匹配单词的开头 |
| \> | 匹配单词的结尾 |
| \b | 匹配单词的边界(开头和结尾) |
| \B | \b的反义 |
匹配模式
注: 多行模式迫使正则表达式引擎将换行符视为字符串分隔符
特殊字符元字符
| 元字符 | 说明 |
|---|
| [\b] | 退格字符 |
| \c | 匹配一个控制字符 |
| \d | 匹配任意数字字符 |
| \D | \d的反义 |
| \f | 换页符 |
| \n | 换行符 |
| \r | 回车符 |
| \s | 匹配任意空白字符 |
| \t | 制表符(Tab键) |
| \v | 垂直制表符 |
| \w | 匹配任意字母数字字符或下划线字符 |
| \W | \w的反义 |
| \x | 匹配一个十六进制数字 |
| \0 | 匹配一个八进制数字 |
注: 控制字符即ASCII 0 到 31, 再加上 ASCII 127
反向引用和环视元字符
| 元字符 | 说明 |
|---|
| () | 定义一个子表达式 |
| \1 | 匹配第一个子表达式;\2匹配第二个子表达式,以此类推 |
| ?= | 肯定式向前查看 |
| ?<= | 肯定式向后查看 |
| ?! | 否定式向前查看 |
| ?<! | 否定式向后查看 |
| ?() | 条件( if then ) |
| ?() | | 条件(if then else) |
大小写转换元字符
| 元字符 | 说明 |
|---|
| \E | 结束\E 或 \U 转换 |
| \l | 把下一个字符转为小写 |
| \L | 把后面的字符转换为小写,直到遇到 \E 为止 |
| \u | 把下一个字符转换为大写 |
| \U | 把后面的字符转换为大写,直到遇见 \E 为止 |
空白字符
| 元字符 | 说明 |
|---|
| [\b] | 回退(并删除)一个字符 |
| \f | 换页符 |
| \n | 换行 |
| \r | 回车符 |
| \t | 制表符(Tab键) |
| \v | 垂直制表符 |
POSIX字符类
| 字符类 | 说明 |
|---|
| [:alnum:] | 任何一个字母或数字(等价于[a-zA-Z0-9]) |
| [:alpha:] | 任何一个字符(等价于[a-zA-Z]) |
| [:blank:] | 空格或制表符(等价[\t ]) |
| [:cntrl:] | ASCII控制字符(ASCII 0 到 31, 再加上 ASCII 127) |
| [:digit:] | 任何一个数字(等价于[0-9]) |
| [:graph:] | 和[:print:]但不包括空格 |
| [:lower:] | 任何一个小写字母(等价于[a-z]) |
| [:print:] | 任何一个可打印字符 |
| [:punct:] | 既不属于[:alnum:],也不属于[:cntrl:]的任何一个字符 |
| [:space:] | 任何一个空白字符,包括空格(等价于[\f\n\r\t\v ]) |
| [:upper:] | 任何一个大写字母(等价于[A-Z]) |
| [:xdigit:] | 任何一个十六进制数字(等价于[a-fA-F0-9]) |