谁还记得re正则表达式怎么写,不都面向互联网编程了吗?

正则表达式

这是一个悲伤的话题,在实际工作中,可能用得少会的更少,每当要用的时候,都是一番手忙脚乱;
问度娘,然后就是一顿调试,最终得到预期结果,好在面向网络编程大多都能得到一个良好的结果。 

作者熟悉python语言,本章以内置库re模块为例。

  • 那么到底什么正则表达式
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,
这个“规则字符串”用来表达对字符串的一种过滤逻辑。

--- 摘自百度百科 
  • 所以从概念得知,它是针对字符串操作的,而不是其他数据类型,切记,那么它有什么作用呢?
# 前人有总结
1、匹配
2、提取
3、替换 

从正则表达式的用途开始入手

  • 第一:匹配字符串

先看两个方法: re.match(pattern,string,flags=0) and re.search(pattern,string,flags=0); 看着参数长得一样,但是用法有明显的区别:match是从头开始匹配,如果没有就返回None, search是搜索整个字符串,直到匹配到为止,否则返回None;所以一般推荐使用search方法,除非已知要找的字符串在0索引位则使用match方法。

    • 示例如下:
import re

str_long="1234ABCDabcd9876"

res1=re.match(r"\d+", str_long)
res0=re.match(r"ABC", str_long)

# 第一个是1234,第二个返回None
print(res1.group(),res0)

res2=re.search(r"\d+", str_long)
res3=re.search(r"po", str_long)

# 第一个是1234,第二个返回None
print(res2.group(0),res3) 
  • 第二:提取

re正则表达式提取,在很多工具或代码中常用()小括号表示

# 如果是找单个字符,可以不用(),因为它找到即停止,如果要匹配更多就需要()来选定返回或左右边界
import re

str_long="1234ABCDabcd9876"

res4=re.search("([a-z]+)",str_long)

print(res4.group()) 
  • 第三:替换

字符串有自己的替换方法replace,但是re提供了替换方法:sub(pattern,repl,string,count=0,flags=0)

# sub替换函数,可以直接将结果替换之后并返回
import re

str_long="1234ABCDabcd9876"

re5=re.sub(r"\d{3}$","repl",str_long)
print(re5) 

为什么不解释如何写正则表达式

这里并不解释正则表达式如何写的原因:

  • 一、需求不明,不知读者想要啥,
  • 二,再多介绍,也敌不过问度娘来得实在。
  • 三,所以要学习或了解,还得自己亲自操刀实践。

re模块扩展方法

  • compile是用于编译正则表达式,生成pattern对象,供search和match两个方法使用;
import re

str_long="1234ABCDabcd9876"

pattern=re.compile("\d+$")

res6=pattern.match(str_long)
res7=pattern.search(str_long)
# 第一个为None,第二个为9876
print(res6,res7.group()) 
  • findall是pattern对象的方法,返回的是列表
import re

str_long="1234ABCDabcd9876"

pattern=re.compile("\d+$")
res8=pattern.findall(str_long)

print(res8) # ['9876'] 

总结

写这篇博客的同时,也是为了提醒自己,该掌握的还得掌握,尽管是面向百度开发。所以,花了点时间,自己又巩固了一下知识,何乐而不为呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值