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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值