Introduction to Regular Expression

正则表达式是由普通字符(例如字符a 到z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

基本元字符

元字符 说明
. 匹配任意单个字符
| 逻辑或操作符
[] 匹配字符集合中的一个字符
[^] 对字符集求非
- 定义一个区间(e.g. [A-Z])
|对下一个字符进行转义

数量元字符

元字符 说明
* 匹配前一个字符(子表达式)的零次or多次
*? *的懒惰版本
+ 匹配前一个字符(子表达式)的一次or多次
+? +的懒惰版本
? 匹配前一个字符(子表达式)的零次or一次
{n} 匹配前一个字符(子表达式)的n次
{m, n} 匹配前一个字符(子表达式)的m-n次
{n, } 匹配前一个字符(子表达式)至少n次
{n, }? {n, }的懒惰版本

位置元字符

元字符 说明
^ 匹配字符串的开头
\A 匹配字符串的开头
$ 匹配字符串的结束
\Z 匹配字符串的结束
< 匹配单词的开头
> 匹配单词的结束
\b 匹配单词的边界(开头and结束)
\B \b的反义

特殊字符元字符

元字符 说明
[\b] 退格字符
\c 匹配一个控制字符
\d 匹配任意数字字符
\D \d的反义
\f 换页符
\n 换行符
\r 回车符
\s 匹配一个空白字符
\S \s的反义
\t 制表符
\v 垂直制表符
\w 匹配任意字母数字字符or下划线字符
\W \w的反义
\x 匹配一个十六进制数字
\0 匹配一个八进制数字

回溯引用和前后查找

元字符 说明
() 定义一个子表达式
\1 匹配第1个子表达式;\n表示匹配第n个子表达式
?= 向前查找
?<= 向后查找
?! 负向前查找
?<! 负向后查找
?() 条件(if then)
?()| 条件(if then... else...)

大小写转换

元字符 说明
\E 结束\L or \U转换
\l 把下一个字符转换为小写
\L 把后面的字符转换为小写,直到遇到\E
\u 把下一个字符转换为大写
\U 把后面的字符转换为大写,直到遇到\E

匹配模式

元字符 说明
(?m) 分行匹配模式