一、正则表达式概述
正则表达式可以被看作是针对字符串操作的逻辑公式。通过一些预定义的特定字符及其组合,我们可以创建一个“规则字符串”来表达对字符串的过滤逻辑。
二、正则表达式的用途
- 匹配:验证字符串是否符合某个模式。
- 提取:从字符串中提取符合特定模式的子串。
- 替换:在字符串中替换符合特定模式的部分。
三、Python中的re模块
作者以Python的内置库re
模块为例,介绍了几种常用的正则表达式操作方法。
3.1、匹配字符串
re.match
:从头开始匹配字符串,如果匹配失败则返回None。re.search
:搜索整个字符串,直到找到匹配为止,否则返回None。
示例代码:
import re
str_long="1234ABCDabcd9876"
# 使用match和search方法
res1 = re.match(r"\d+", str_long) # 从头开始匹配数字
res2 = re.search(r"\d+", str_long) # 搜索整个字符串匹配数字
print(res1.group() if res1 else None) # 输出匹配结果或None
print(res2.group()) # 输出搜索到的匹配结果
3.2、提取字符串
正则表达式提取通常使用小括号()
来定义返回或左右的边界。
示例代码:
import re
str_long="1234ABCDabcd9876"
# 使用search方法提取小写字母
res4 = re.search(r"([a-z]+)", str_long)
print(res4.group()) # 输出提取结果
3.3、替换字符串
re.sub
:根据正则表达式的模式替换字符串中的匹配项。
示例代码:
import re
str_long="1234ABCDabcd9876"
# 使用sub方法替换字符串
re5 = re.sub(r"\d{3}$", "repl", str_long) # 替换字符串末尾的三个数字
print(re5) # 输出替换后的结果
四、为什么不深入解释如何写正则表达式
作者认为不深入解释如何写正则表达式的原因有三:
- 需求不明确,不确定读者的具体需求。
- 网络资源(如百度)提供了更快速的查询途径。
- 鼓励读者亲自实践,通过实际操作来学习和掌握。
五、re模块的扩展方法
5.1、compile
编译正则表达式,生成pattern对象,供后续使用。
示例代码:
import re
str_long="1234ABCDabcd9876"
# 编译正则表达式
pattern = re.compile(r"\d+$") # 匹配字符串末尾的数字
# 使用编译后的模式进行匹配和搜索
res6 = pattern.match(str_long)
res7 = pattern.search(str_long)
print(res6, res7.group()) # 输出匹配结果和搜索结果
5.2、findall
返回一个列表,包含字符串中所有符合正则表达式的部分。
示例代码:
import re
str_long="1234ABCDabcd9876"
# 使用findall方法
pattern = re.compile(r"\d+$")
res8 = pattern.findall(str_long)
print(res8) # 输出所有匹配的结果列表
六、总结
尽管在开发中可能频繁依赖网络搜索来解决问题,作者还是强调了掌握正则表达式的重要性,并鼓励通过实践来巩固知识。