正则Day10

一 正则表达式

说明:正则表达式 提供了一种模糊匹配的操作
1.[]    #原子表
  [a]   #匹配一个字母a
  [A]   #匹配一个大写字母的A
  [aA]  #匹配大小写字母a
  [abcd] #匹配abcd中的任意一位字母
  [a-z] #匹配任意一位小写字母
  [a-zA-Z]#匹配任意一位字母

2.^ 以...作为开头 如果放在[] 里 叫做取反
  ^[0-9]  #以数字作为开头
   [^0-9] #匹配除了 数字以外的任意字符
   ^[0-9a-zA-Z] #以数字字母作为开头

3.$    以...作为结尾  \Z
  [0-9]$ 以数字作为结尾
  [3a]$  以数字3或者字母a作为结尾

4. ^$组合来用   因为组合来用 才能够真正的去限制 我匹配内容的长度   \A
  ^[1][3-8][0-9]{9}$ 匹配手机号

5.{m} 表示前面的数量m个
  [9]{3}
  9{3}
  [a-zA-Z]{4}
  [a-zA-Z0-9_]{4}
  注意:不能够进行单独使用

6.{m,n} 表示前面的数量m-n个
  [9]{1,3}
  9{1,3}
  [a-zA-Z]{2,4}
  [a-zA-Z0-9_]{2,4}
  [1-9][0-9]{5,10}
  注意:不能够进行单独使用

7.{m,} 表示前面的数量至少m个
  [a-z]{1,} #匹配至少一位字母
  [a-zA-z]{2,}  #匹配至少俩位字母

8.?     可有可无
  -?[1-9]       #匹配一位1-9的整数
  [1-9][0-9]?   #匹配1-99的数字
  [1-9][0-9]{0,}

9.*     匹配次数的任意次  等同于{0,}
 [0-9]*  #匹配任意位的数字

10..    匹配换行符以外的任意字符  \r\n
  .*    #匹配换行符以外的任意字符任意次 常用的组合  贪婪模式
  .*?   #匹配换行符以外的任意字符任意次 常用的组合  拒绝贪婪模式


11.+    匹配次数的至少1次  等同于{1,}
    [0-9]+ #至少匹配一位数字
    .+  #匹配换行符以外的任意字符至少1次 常用的组合  贪婪模式
    .+? #匹配换行符以外的任意字符至少1次 常用的组合  拒绝贪婪模式

12.()   1.代表一个单元   2.子存储

13.|    或
    (a|z) 匹配a或z
    [az]

14.特殊意义的字符
    \d   0-9
    \D   取反 [^0-9]
    \w   [a-zA-Z0-9_]
    \W   取反  [^a-zA-Z0-9_]
    \s   匹配空白字符
    \S   匹配非空白字符

正则表达式的函数

需要导入 re 正则模块

(1) re.findall(patt,str,flag)
  • patt 正则表达式
  • str 匹配的字符串
  • flag 修正符(可选参数)

注意:匹配所有

匹配成功:返回 列表包含内容

匹配失败:返回空列表

(2) re.match(patt,str,flag)
  • patt 正则表达式
  • str 匹配的字符串
  • flag 修正符(可选参数)

匹配成功:返回 对象

  • 取值
  • group() 方法 进行取值

匹配失败:返回None

注意:

  1. 正则匹配的内容 必须为起始位置 也就是必须为第一位 否则返回None 匹配失败
  2. 只匹配一次
(3) re.search(patt,str,flag) 匹配 不分位置 匹配一次
  • patt 正则表达式
  • str 匹配的字符串
  • flag 修正符(可选参数)
(4) re.finditer(patt,str,flag) 以迭代器的形式返回 匹配多次
  • patt 正则表达式
  • str 匹配的字符串
  • flag 修正符(可选参数)
(5) re.sub/subn 正则的替换 一个返回匹配的次数/不反回替换次数
  • patt 正则表达式
  • old 匹配的字符串
  • new 替换成新的
  • times 替换的次数
  • flag 修正符(可选参数)
#用到了括号的子存储 通过\\1-\\n进行取值 \\1-\\n的顺序 就是你()的顺序
myStr = "2017/10/1"  #10-1-2017
res = re.sub("([0-9]{4})/([0-9]{2})/([0-9])","\\2-\\3-\\1",myStr)
(6) re.split() 正则的拆分
myStr = "asdasd&asd*asd@asd"
#通过特殊字符 对其进行拆分 成列表
# res = re.split("[^a-z]",myStr)
# print(res)

正则表达式的修正符

re.I 不区分大小写

re.M 多行模式 对 ^ 和 $有影响

re.S 改变.的行为 使它可以匹配换行符

(7) compile(正则,修正符) 将正则和数据进行分离 使正则对象 可以多次使用

使用:pattern = re.compile(正则,修正符)

​ pattern.函数名(数据)

修正符

re.IGNORECASE 不区分大小写

re.MULTILINE 多行模式 对 ^ 和 $有影响

re.DOTALL 改变.的行为 使它可以匹配换行符

二 数据的读取

from urllib import request 模块
import urllib.request
(1)通过urlopen的方法 打开 当前的url地址

request.urlopen(url)

(2) 通过打开url地址返回的对象 进行操作

read() 读取全部

readline() 读取一行

readlines() 读取全部 以列表返回

getcode() 获取状态码

geturl() 获取当前访问的url地址

(3) 设置请求超时

request.urlopen(url,timeout=秒数)

(4) url地址的转换

request.quote(newPath)

request.unquote(path)

(5) 模拟浏览器请求

res = request.Request(path,header=”请求头”) #{“User-Agent”:”“}

request.urlopen(res)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值