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 匹配模式
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注释
0x10 正则表达式资源