# 正则表达式
# 正则语法
# 单个字符
- 换行符:
\n,记忆方法:new line; - 换页符:
\f,记忆方法:form feed; - 回车符:
\r,记忆方法:return; - 空白符:
\s,记忆方法:space; - 制表符:
\t,记忆方法:table;
# 多个字符
- 定义集合:
[],例如/[123]/可以同时匹配 1,2,3 三个字符; [0-9]匹配所有数字,[a-z]匹配所有小写英文字母,[A-Z]匹配所有小写英文字母,[\u4e00-\u9fa5]匹配所有的汉子;- 匹配除了换行符之外的任何字符:
.,记忆方法:代表句号,表示除了句子结束符 - 匹配单个数字[0-9],
\d,记忆方法:digit; - 匹配除了[0-9],
\D,记忆方法:not digit; - 匹配包括下划线在内的单个字符,[A-Za-z0-9_],\w,记忆方法:word;
- 匹配非单字字符,
\W,记忆方法:not word; - 匹配空白字符,包括空格、制表符、换页符和换行符,\s,记忆方法:space;
- 匹配非空白字符,
\S,记忆方法:not space
# 匹配次数
- 元字符
?代表了匹配 1 个字符或 0 个字符,例如同时匹配color和colour,可以使用/colou?r/。 - 元字符
*用来表示匹配同个字符出现 0 次或多次的情况。 - 元字符
+适用于要匹配同个字符出现 1 次或多次的情况。 - 特定的重复次数:使用元字符
{和}用来给重复匹配设置精确的区间范围。如想匹配 3 次'a',使用/a{3}/,如果匹配至少两次'a'用/a{2,}/,详细信息:{x}: x 次{min, max}: 介于 min 次到 max 次之间{min, }: 至少 min 次{0, max}: 至多 max 次
# 单词与字符串边界
单词是构成句子和文章的基本单位,一个常见的使用场景是把文章或句子中的特定单词找出来。这时需要用边界正则表达式\b,例如对于例句:
The cat scattered his food all over the room.
想找 cat 这个单词,如果只是使用/cat/,会同时匹配到 cat 和 scattered 这两处文本。这时需使用边界正则表达式\b,其中 b 是 boundary 的首字母。在正则引擎里它其实匹配的是能构成单词的字符(\w)和不能构成单词的字符(\W)中间的那个位置。上面的例子改写成/\bcat\b/这样就能匹配到 cat 这个单词了。
对于字符串来说,元字符^用来匹配字符串的开头。而元字符$用来匹配字符串的末尾。
# 分组
其中分组体现在:所有以(和)元字符所包含的正则表达式被分为一组,每一个分组都是一个子表达式,它也是构成高级正则表达式的基础。如果只是使用简单的(regex)匹配语法本质上和不分组是一样的,如果要发挥它强大的作用,往往要结合回溯引用的方式。
所谓回溯引用(backreference)指的是模式的后面部分引用前面已经匹配到的子字符串。你可以把它想象成是变量,回溯引用的语法像\1,\2,....,其中\1表示引用的第一个子表达式,\2表示引用的第二个子表达式,以此类推。而\0则表示整个表达式。
# python使用正则表达式
# python使用正则提取信息
import re
p = re.compile("正则表达式") # 对正则表达式字符串进行编译
← 搭建指南