正则表达式常用元字符
摘自《正则表达式必知必会(修订版)》,做此整理,以便查阅。
目录:
基本的元字符
元字符 | 说明 |
---|
. | 匹配任意单个字符 |
| | 逻辑或运算符 |
[ ] | 匹配该字符集合中的一个字符 |
[^] | 排除该字符集合 |
- | 定义一个范围(例如[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]) |