python基础学习笔记(二十)-正则化

一.简单字符串匹配
python基础学习笔记(二十)-正则化
二.正则化实现字符串匹配
1.简单匹配
需要import re,匹配成功返回object,反之返回None;
python基础学习笔记(二十)-正则化
2.匹配多种可能的字符串
匹配多种可能的字符串用[ ]
p3=r"r[au]n" #r表示匹配到的是正则表达式 没加r的是字符串python基础学习笔记(二十)-正则化
3.匹配更多可能
如图所示;
print(re.search(r"r[a-z]n",“cat runs to dog”))
print(re.search(r"r[0-9]n",“cat r2ns to dog”))
print(re.search(r"r[0-9a-z]n",“cat runs to dog”))
python基础学习笔记(二十)-正则化
4.匹配数字
\d:decimal dight
\D:nondecimal dight
print(re.search(r"r\dn",“run r4n”))
python基础学习笔记(二十)-正则化
5.匹配空格等
\s:any white space[\t\n\r\f\v]
\S:any non-white space
print(re.search(r"r\sn",“r\nn r4n”))
python基础学习笔记(二十)-正则化
\d : 任何数字
\D : 不是数字
\s : 任何 white space, 如 [\t\n\r\f\v]
\S : 不是 white space
\w : 任何大小写字母, 数字和 “” [a-zA-Z0-9]
\W : 不是 \w
\b : 空白字符 (只在某个字的开头或结尾)
\B : 空白字符 (不在某个字的开头或结尾)
\ : 匹配
. : 匹配任何字符 (除了 \n)
^ : 匹配开头
$ : 匹配结尾
? : 前面的字符可有可无
python基础学习笔记(二十)-正则化
python基础学习笔记(二十)-正则化
6.多行匹配
如果一个字符串有很多行, 我们想使用 ^ 形式来匹配行开头的字符, 如果用通常的形式是不成功的. 比如下面的 “I” 出现在第二行开头, 但是使用 r"^I" 却匹配不到第二行, 这时候, 我们要使用 另外一个参数, 让 re.search() 可以对每一行单独处理. 这个参数就是 flags=re.M, 或者这样写也行 flags=re.MULTILINE.
python基础学习笔记(二十)-正则化
7.重复多次
如果我们想让某个规律被重复使用, 在正则里面也是可以实现的, 而且实现的方式还有很多. 具体可以分为这三种:

  • : 重复零次或多次
  • : 重复一次或多次
    {n, m} : 重复 n 至 m 次
    {n} : 重复 n 次
    python基础学习笔记(二十)-正则化
    8.group组
    我们可以为找到的内容分组, 使用 () 能轻松实现这件事. 通过分组, 我们能轻松定位所找到的内容. 比如在这个 (\d+) 组里, 需要找到的是一些数字, 在 (.+) 这个组里, 我们会找到 “Date: “ 后面的所有内容. 当使用 match.group() 时, 他会返回所有组里的内容, 而如果给 .group(2) 里加一个数, 它就能定位你需要返回哪个组里的信息。
    python基础学习笔记(二十)-正则化
    有时候, 组会很多, 光用数字可能比较难找到自己想要的组, 这时候, 如果有一个名字当做索引, 会是一件很容易的事. 我们字需要在括号的开头写上这样的形式 ?P<名字> 就给这个组定义了一个名字. 然后就能用这个名字找到这个组的内容。
    python基础学习笔记(二十)-正则化
    9.findall
    如果需要找到全部的匹配项, 我们可以使用 findall 功能. 然后返回一个列表. 注意下面还有一个新的知识点, | 是 or 的意思。
    python基础学习笔记(二十)-正则化
    10.replace
    通过正则表达式匹配上一些形式的字符串然后再替代掉这些字符串. 使用这种匹配 re.sub(), 将会比 python 自带的 string.replace() 要灵活多变。
    python基础学习笔记(二十)-正则化
    11.split
    Python 中有个字符串的分割功能, 比如想获取一句话中所有的单词. 比如 “a is b”.split(" "), 这样它就会产生一个列表来保存所有单词. 但是在正则中, 这种普通的分割也可以做的淋漓精致.
    python基础学习笔记(二十)-正则化
    12.compile
    我们还能使用 compile 过后的正则, 来对这个正则重复使用. 先将正则 compile 进一个变量, 比如 compiled_re, 然后直接使用这个 compiled_re 来搜索.
    python基础学习笔记(二十)-正则化
    下图为总结,图源网络。
    python基础学习笔记(二十)-正则化