python进阶--正则表达式(2)

一、初识正则表达式

为了使计算机具有在文本中检索某种模式的能力,我们引入了正则表达式。
正则表达式为高级的文本模式匹配、抽取或者文本形式的搜素和替换功能提供了基础。利用正则表达式能够匹配多个字符串。
正则表达式的强大之处在于引入了特殊字符来定义字符集、匹配子组和重复模式。由于有了这些特殊符号,正则表达式可以匹配字符串集合,而不仅仅是某单个字符串。

特点:

灵活性、功能性、逻辑性强
可以用简单的方式对字符串实现复杂控制

二、正则匹配规则

∙ \bullet 数字和字母都表示它本身
∙ \bullet 很多字母前加 \ 会有特殊含义
∙ \bullet 绝大多数标点符号都有特殊含义,需要用加 \

三、正则匹配模式

∙ \bullet 特殊符号的含义

表示法描述示例结果
liter匹配文本字符串的字面值foofoo
re1 I re2匹配正则表达式re1或者re2aIba或者b
.匹配任意字符(除\n)a.a俩a间插入任意字符
^匹配字符串起始部分
$匹配字符串结束部分
*匹配0次或多次前面出现的正则表达式
匹配1次或多次前面出现的正则表达式
+匹配0次或1次前面出现的正则表达式
{N}匹配N次前面出现的正则表达式[0-9]{3}任意三位数
{N,M}匹配N~M次前面出现的正则表达式[0-9]{3,5}任意三位数或四位数或五位数
{N,}匹配N次以上前面出现的正则表达式
{,N}匹配N次及以下前面出现的正则表达式
[…]匹配来自字符集的任一字符
[.x-y…]匹配x-y范围的任一字符
[^…]不匹配此字符集中的任意字符
(…)匹配封闭的正则表达式,然后另存为子组
()表示一个分组

∙ \bullet 特殊字母的含义

表示法描述示例结果
\d匹配任意十进制数字,等同[0-9],\D表示不匹配数字
\w表示匹配数字字母字符和 _, \W相反
\s表示匹配任意非打印字符,如空格字符,\S匹配非空白字符
\b匹配任何单词边界
\t表示一个制表符

四、re模块

4.1查找相关方法

方法名描述格式
match从头 查找字符串,返回一个re.Match对象,匹配失败返回Nonematch(pattern, string, flags=0) pattern为正则匹配规则,flag为正则修饰符
search查找整个字符串,返回一个re.Match对象,匹配失败返回Nonesearch(pattern, string, flags=0)
finditer查找所有的匹配数据,finditer返回的结果是一个可迭代对象,里面的数据都是匹配到的结果,也是re.Match对象finditer(pattern, string, flags=0)
findall把查找的的所有字符串结果放到一个列表里findall(pattern, string, flags=0)
findmatch从头完整匹配,失败为Nonefindmatch(pattern, string, flags=0)

4.2 替换(sub)

re.sub(pattern, repl, string, count=0, flags=0)  # repl表示替换后的字符或函数,count表示替换次数

如果repl为一个函数,sub内部会自动调用该函数并传参,参数为每一个匹配到的re.Match格式的数据

4.2 re.Match类

方法和属性描述
pos搜索开始的位置
enpos搜索结束的位置
string搜索的字符串
re当前使用的正则表达式的对象
lastindex最后匹配的组索引
lastgroup最后匹配的组名
group(index=0)某个分组匹配的结果。index=0,匹配整个正则表达式
groups()所有分组的匹配结果,为列表类型
groupdict()返回组名为key,每个分组的匹配结果为value的字典
start([ ])获取组的开始位置
end([ ])获取组结束的位置
sapn([ ])获取组的开始和结束位置
expand(template)使用组的匹配结果来替换template的内容,并把替换后的字符串返回

4.3 re.compile类

使用方法:

  a = re.compile(正则规则)  # a为Pattern对象
  b = a.search(要匹配的字符串1)
  c = a.search(要匹配的字符串2)

五、正则修饰符

正则修饰符描述
re.S让 . 匹配换行
re.I忽略大小写
re.M让$ 匹配到换行

六、贪婪模式和非贪婪模式

在正则模式里会默认尽可能匹配更多的字符串,即贪婪模式。在贪婪模式会加 ?会切换到非贪婪模式。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值