奶龙来了都能学会的python(八)!!!之正则表达式库
正则表达式在爬虫技术中使用较多,而爬虫技术是为人工智能服务的,主要用于从网页中获取数据。学习爬虫需要掌握正则表达式,因为它是处理字符串数据的重要工具。Python 中通过re库实现正则表达式功能,需先导入库。
目录
一.正则表达式介绍
1.正则表达式的应用场景
正则表达式在爬虫技术中使用较多,而爬虫技术是为人工智能服务的,主要用于从网页中获取数据。
学习爬虫需要掌握正则表达式,因为它是处理字符串数据的重要工具。
Python 中通过 re
库实现正则表达式功能,需先导入库。
2.正则表达式的本质
正则表达式是一种表达式语句,类似于数值操作中的表达式(如 A + B - 3)。
它的主要作用是对字符串类型的数据进行操作,例如从字符串中筛选出满足特定条件的信息。
正则表达式能够更高效地处理复杂的数据提取需求,尤其是面对网页中千奇百怪的数据格式时。
3.正则表达式的优势
相比传统方法,正则表达式能够简化复杂信息的提取过程,适用于更广泛的数据处理场景。
4.匹配字符串
匹配字符串表示从字符串中筛选出满足条件(特殊的表达式)的信息,介绍三种方法,分别是re库中的match()函数,search()函数和findall()函数
①match()函数
match(参数一,参数二)
功能:从参数一字符串起始位置匹配参数二指定规则,若匹配成功返回结果,否则返回 None
。
import re
message = "张三李四王五赵六"
result = re.match("张三", message) # 匹配成功,返回张三及位置(0-2)
特点:
必须从字符串开头匹配,否则失败(如 re.match("三", message) 返回 None)。
②search()函数
功能:在参数一字符串中搜索第一个满足参数二规则的子串,不要求从起始位置匹配,只返回第一个匹配成功的
result = re.search("王五", message) # 返回第一个"王五"及位置(4,6)
特点:
仅返回第一个匹配结果,支持任意位置匹配。
③findall()函数
功能::在参数一字符串中搜索满足参数二规则的子串,不要求从起始位置匹配,可以返回多个成功匹配的信息
import re
message = '张三,李四,王五,赵六,王五'
result=re.findall('王五',message)
print(result)#['王五','王五']
findall()并不返回匹配的位置,只返回匹配的全部内容
5.正则表达式
①表示字符范围
[xyz]:字符集合,匹配所包含的任意一个字符,例如[abc]可以匹配plain中的a
[a-z]:字符范围,匹配范围内的任意字符,例如[a-z]可以匹配a到z范围的任意小写字母
②表示字符出现的次数
星号 *
:匹配前导子表达式零次或多次(如 ZO*
可匹配 Z
、ZO
、ZOO
)
加号 +
:匹配前导子表达式一次或多次(如 [a-z]+[0-9]
要求字母至少出现一次)。
问号 ?
:匹配前导子表达式零次或一次(如 [a-z]?[0-9]
允许字母出现零次或一次)。
尖号 ^
:匹配行首(如 ^1
确保手机号以 1
开头)。
美元符 $
:匹配行尾(如 [0-9]{10}$
确保结尾为 10 位数字)。
花括号{n}:匹配n次,例如,“o{2}”不能匹配“Bob"中的o,但是能匹配到”food“中的oo
{n,}:至少匹配n次
{n,m}:最少匹配n次,最多匹配m次
例如:验证手机号码,:手机号匹配规则需以 $
结尾,若未严格限定行尾匹配,可能导致验证失败。
import re
a=input("请输入你的手机号码:")
result=re.findall('^1[0-9]{10}$',a)
print(result)
网站用户由字母(大小写都可),数字和下划线组成,数字不能开头,用户长度大于8,
import re
a=input("请输入你的用户名:")
result=re.findall('^[a-zA-z_][a-zA-z0-9_]{7,}$',a)
print(result)
③表示同一类字符
1.特殊字符匹配
\d: 匹配一个数字字符,(等价于[0-9]
)
\D
:匹配一个非数字字符(等价于[^0-9]
)
\s
:匹配任何不可见字符(如空格、制表符、换页符等)。
\S: 匹配任何可见字符
\w
:匹配包括下划线的任何单词字符(包括字母、数字、下划线),等价于([a-zA-z0-9_])
\W: 匹配不包括下划线非单词字符,等价于([^a-zA-z0-9_])
. :匹配除了”\n“和”\r“之外的任何单个字符
2.边界与符号匹配
\B
:匹配非单词边界(如单词中间部分)。
\b
:匹配单词边界(如空格分隔的单词边缘)。
\f
、\n
、\r
、\t
、\v
:分别匹配换页符、换行符、回车符、制表符、垂直制表符。
3.重复匹配
+
:匹配前一个子表达式一次或多次(贪婪模式)。
?
:将匹配模式转为非贪婪模式(匹配最少字符)。
6.贪婪模式和非贪婪模式
贪婪模式和非贪婪模式就是指是否匹配更多内容,默认都是贪婪模式
贪婪模式(默认):\d+
匹配尽可能多的数字(如cc771
中的771
)。
非贪婪模式:\d+?
匹配最少数字(如cc771
中的7
)。
7.或和组
或(|):匹配多个条件之一,如(\w+EV|\w+RY) 筛选以EV或RY结尾的单词。
组(()):将表达式分组并保存匹配内容,如(.\+) 匹配任意字符序列并存储。可以使用组的形式获取组中的内容
import re
message='verb very never every'
result=re.findall('e(.+)(.)r',message)
print(result)
#[('rb very never ev', 'e')]
8.sub()方法和compile方法
①sub(参数一,参数二,参数三)方法
包含三个参数,将参数三中所有匹配参数一的字符替换为参数二
②compile()方法
创建一个正则表达式对象,可直接调用对象方法(如 findall
)操作字符串。与直接使用 re
模块功能类似,区别在于对象化调用。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)