一、匹配类
- 普通字符。除了具有特殊意义的字符除外,在表达式中代表字符本身。
- . :代表任意字符。
- \d: 代表数字
- \s:代表任意空白字符,如空格,\t, \n
- \w:代表数字、字符、下划线、中文
- \D:除数字外的字符
- \S:除空白字符外的任意字符
- \W:数字、字符、下划线、中文外的任意字符
- [字符1,字符2]:匹配[ ]中的任意字符,在[]中也可以使用a-z的形式,-放在两个字符间才有意义
- [^字符1,字符2]:匹配除了[ ]中的任意字符
二、检测类 – 在匹配成功的基础上
- \b:检测是否为单词边界,如果遇到空格,逗号,字符串的开头或结尾
- \B:与上述相反。
- ^: 作为字符串的开头。
- $:作为字符串的结尾。
三、匹配次数
*
: 匹配0次或多次+
: 匹配1次或多次?
: 匹配0次或1次- {N}:匹配N次
- {M,N}: 匹配M到N次
- {M,}:匹配至少M次
- {,N}:匹配最多N次
- 贪婪与非贪婪:如果匹配成功,当匹配结果有多种时,如果选取长度最大的即为贪婪,默认为此种。选取长度最短的,为不贪婪。可以在上述比较次数的字符后面加?.
四、分组与分支
- 分组:利用()
- 应用场景一:将一部分用()括起来,进行整体操作。
- 场景二:对前面匹配成功的部分用\M来进行操作。
- 场景三:捕获(只获取某个分支对应的内容)
- 分支:利用
|
五、re模块
-
compile(正则表达式): 返回一个正则对象
-
匹配相关方法:
- fullmatch(正则,字符串) —如果成功返回匹配对象,否则返回None
- match(正则,字符串) – 只匹配字符串的开头
-
匹配对象:
- 匹配对象.group() ----获取全部的匹配成功内容
- 匹配对象.group(N) ----获取第N个匹配成功内容
- 匹配对象.span() ----获取全部的匹配成功内容的开始下标和结束下标
- 匹配对象.span(N) ----获取第N个匹配成功内容的开始下标和结束下标
- 匹配对象.string() – 获取原字符串内容
-
查找相关方法 1)serch(正则表达式, 字符串) -- 在字符串中搜索第一个满足正则表达式的字符串,如果找不到返回None。如果找到,则返回匹配对象。 2)findall(正则表达式, 字符串) -- 获取字符串中所有满足正则表达式的子串,如果有则返回列表,如果没有,则返回空列表。 3)finditer(正则表达式, 字符串) -- 获取字符串中所有满足正则表达式的子串,返回一个迭代器,迭代器中的元素式匹配对象。 4) sub(正则表达式, 字符串1, 字符串2) -- 将字符串2中满足正则的字串替换成字符串1 5) split(正则表达式, 字符串) -- 将字符串中所有满足正则表达式的字串作为切割点对字符串进行切割。
六、转义符号和参数
- 利用
\
将具有特殊含义的符号的作用消失,也可以将这些符号放到[]中,但要注意那些在[]中会起作用的符号。 - 大小。?i 或者 将fullmatch中的flags= I
- 多行匹配。?s 或者 fullmatch中的flags= S