0x01 正则表达式

简单的说,正则表达式(regular expression,简称regex)是一些用来匹配和处理文本的字符串。正则表达式和正则表达式语言已经出现很多年,用来完成各种复杂的文本处理工作,可以在几乎所有的程序设计语言里和几乎所有的计算机平台上使用。

0x02 基本元字符

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

0x03 数量元字符

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

0x04 位置元字符

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

0x05 特殊字符元字符

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

0x06 回溯引用和前后查找

元字符 说明
() 定义一个子表达式
\1 匹配第1个子表达式;\2代表第2个子表达式,以此类推
?= 向前查找
?<= 向后查找
?! 负向前查找
?<! 负向后查找
?() 条件(if then)
?()| 条件(if then else)

0x07 大小写转换

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

0x08 匹配模式

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

0x09 常用正则表达式

1、IP地址

(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))

2、URL地址

https?://[-\w.]+(:\d+)?(/([\w/_.]*)?)?

3、完整URL地址

https?://(\w*:\w*@)?[-\w.]+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?

4、电子邮件地址

(\w+\.)*\w+@(\w+\.)+[A-Za-z]+

5、HTML注释

<!-{2,}.*?-{2,}>

0x10 正则表达式资源

  • 正则表达式速查表。高清PDF大图 –> 正则表达式速查表

  • 一个正则表达式的可视化开源工具,直接输入正则表达式就能用可视化显示出来,只需要把你的表达式输入进去,就有可视化的图形。 –> regexper