正则表达式
这是一个悲伤的话题,在实际工作中,可能用得少会的更少,每当要用的时候,都是一番手忙脚乱;
问度娘,然后就是一顿调试,最终得到预期结果,好在面向网络编程大多都能得到一个良好的结果。
作者熟悉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']
总结
写这篇博客的同时,也是为了提醒自己,该掌握的还得掌握,尽管是面向百度开发。所以,花了点时间,自己又巩固了一下知识,何乐而不为呢?

912

被折叠的 条评论
为什么被折叠?



