day 29 正则表达式
一.正则表达式:
1.用途 : 通过一个规则 来从一段字符串中找到符合规则的内容/判断某段字符串是否符合规则
注册页/网页上 要求你输入一个信息 判断你输入的信息是否格式正确
爬取数据 从网页上把代码以字符串的形式下载回到内存,提取这个大字符串中我想要的内容了
2.规则 匹配 待匹配的字符串
正则规则
1.字符组 约束字符中某一个字符位置上的值是什么 只要是出现在字符组中的内容都算匹配到了
2.'[3-9]' 从小到大的顺序到底是根据asc码的顺序来的
3.匹配数字 [0-9] 匹配字母[A-Za-z] 匹配数字和字母[0-9a-zA-Z]
元字符
1.‘ . ’ 匹配除了换行符之外的所有字符
2. \d \s \w 数字 空白 数字字母下划线
3. \D \S \W 非数字 空白 数字字母下划线
4.^ $ 开始 结束
5. \n \t \b 换行 制表 单词两端
6.| 或
7.[...]:匹配字符组中的字符 ;[^....] 匹配除了字符组中字符的所有字符
量词 : ? + * {n} {n,} {n,m} 跟在元字符后面
3.匹配机制
1贪婪匹配 : 正则表达式本身就是贪婪匹配的
2惰性匹配 : 尽量少匹配,需要在量词的后面加上一个?
最常见的用法 .*?标识 表示匹配任意长度的字符遇到标识就立刻停止
4.方法
元字符 量词 [惰性匹配符号?]
看正则表达式的话,怎么区分 ?
找元字符 元字符后面如果出现量词 那么这个量词就是约束这个元字符出现的次数
如果元字符后面如果不出现量词 表示这个元字符匹配一次
如果在量词后面还有? 表示惰性匹配
5.转义
r'\\n',r'\n'
print('\\n')
print('\\\\n')
print(r'\n') # 取消字符串中所有转义符的转义作用
print(r'\\n')
在正则表达式中 涉及到特殊转义的内容 都放在r''中
在工具网页上匹配成功之后 在python中匹配不成功 匹配的字符串中又带有'\',那么直接将测试好的内容都放在r''中
二,re 模块
1.re模块意义: 正则表达式 本身具有处理字符串的能力
如果 要处理的字符串 存在python 的内存里
模块 -> 操作正则表达式
2. ret = re.findall('\d+','kjasdgk912798jkshf912847jzhsfk91278')
print(ret)
# 一次性返回所有匹配到的项,直接存在列表中
ret = re.search('\d+','kjasdg14有058fkjkshfjzhsfk')
print(ret) # 正则匹配结果的对象
if ret:
print(ret.group())
一次只匹配第一个符合条件表达式,以对象的形式返回,通过对象.group()取实际值
如果没有匹配到 会返回None 调用group会报错

浙公网安备 33010602011771号