正则表达式是一门独立的,任何语言均可以使用正则表达式,是由一堆特殊的字符组合而来python
字符组:正则表达式
[0-9] :匹配0-9之间的任意字符spa
[9-0] : 报错, 必须从小到大code
[a-z] : 小写的a-z之间的字母对象
[A-Z] : 大写的A-Z之间的字母blog
[z-A] : 错误, 只能从小到大ip
[A-z] : 从大写的A到小写的z,根据ascii表来匹配对应的值。ci
注意:顺序必需要按照ASCII码表数值的顺序编写字符串
元字符input
组合使用
\w\W : 匹配字母数字下划线与非字母数字下划线,匹配全部
\d\D : 不管是数字或者非数字均可以匹配
^ : startswith '^'在外面使用: 表示开头。 [^]: 表示取反的意思。
[^ab]: 表明只去ab之外的字符。 [^a-z]: 取a-z之外的字符。
$ : endswith
^$ : 配合使用叫作精准匹配,如何限制一个字符串的长度或者内容
| : 表示或。ab|abc若是第一个条件成立,则abc不会执行,怎么解决,针对这种状况把长的写在前面就行了,必定要将长的放在前面。
.* :贪婪匹配
.*? :非贪婪匹配 ----> 能够作过滤想要获取的数据以前的数据
在python中若想使用正则表达式,必须经过re模块来实现
想获取某一堆字符串中的某些字符,正则表达式能够帮咱们过滤,并提取出咱们须要的字符数据
爬虫:re、Beautifulsoup四、Xpath、selector
数据分析:re、pandas、numpy...
用户名与密码、手机号输入认证:检测输入的内容合法性
一、.findall('正则表达式', str) :匹配全部的字符串,拿到返回的结果,返回的结果是一个列表
import re str3 = 'Mr shen 998' t = re.findall('[A-Za-z0-9]{3}',str3) print(t) # ['she', '998']
二、.search('正则表达式', str) :在匹配一个字符串成功后,拿到结果后结束,不日后匹配,返回的结果是一个对象
想要提取获取对象中的值,对象.group()获得
import re str3 = 'Mr shen 998' t2 = re.search('[A-Za-z0-9]{3}', str3) print(t2) # <re.Match object; span=(3, 6), match='she'> print(t2.group()) # she
三、.match('正则表达式', str) :从匹配的字符开头匹配,若开头不是想要的内容,则返回None,匹配成功后返回的结果是一个对象
想要提取获取对象中的值,对象.group()获得
import re # 手机号认证 while True: str1 = input('请输入手机号:').strip() # ^ 表示开头 # | 表示或 # $ 表示结束 # (13|14|18)表示获取一个值13或14或18 # [0-9] 表示限制取值范围 # {n} 表示获取n个值 if re.match('^(13|14|15|17|18|19)[0-9]{9}$', str1): print('手机号格式正确') break else: print('输入格式不正确')
import re str2 = 'shen988' # [A-Za-z0-9] 表示限制取值范围 # {6} 表示取6个值 obj = re.match('[A-Za-z0-9]{6}', str2) print(obj) # 对象<re.Match object; span=(0, 6), match='shen98'> print(obj.group()) # shen98
import re str3 = 'Mr shen 998' t3 = re.match('[A-Za-z0-9]{2}', str3) # 若是限制取3位则会报错,从头找不到三位 print(t3) # <re.Match object; span=(0, 2), match='Mr'> print(t3.group()) # Mr
一、发送请求:requests
二、获取响应数据:对方机器直接返回
三、解析并提取想要的数据:re
四、保存提取后的数据:with open()存到文件中
一、发送请求:requests
二、解析数据
三、保存数据