python正则表达式

慕课网上《python正则表达式》课程个人总结笔记,侵删。
慕课网视频课程链接:https://www.imooc.com/learn/550

简介:正则表达式可以提高复杂文本分析的效率,本课程介绍了Python正则表达式基本概念、为什么使用正则表达式、正则语法、re模块及相关方法使用,如何使用正则表达式处理文件,让您对python正则全面了解。

一、正则表达式介绍

1.1 正则简介
避免了单次匹配的麻烦
使用单个字符串来描述匹配一系列符合某个句法规则的字符串
是对字符串操作的一种逻辑公式
应用场景是处理文本和数据
依次拿出表达式和文本中的字符比较

二、正则表达式re模块

2.1 python正则表达式之re模块使用(一)

import re

str1 = 'imooc python'
str1.find('11')
str1.find('imooc')
str1.startswith('imooc')

#r代表元字符串,不转义
pa = re.compile(r'imooc')
print(pa)
print(type(pa))
print(help(pa.match))

print(pa.match(str1))
ma = pa.match(str1)
print(ma.group())
print(help(ma.group))
print(ma.span())
print(ma.string)
print(ma.re)

pa1 = re.compile(r'_')
ma1 = pa1.match('_value')
print(ma1.group())

2.2 python正则表达式之re模块使用(二)

import re

pa = re.compile(r'imooc',re.I)
print (pa)
ma = pa.match('imooc python')
print (ma.group())
ma = pa.match('Imooc python')
print (ma.group())
ma = pa.match('ImoOc python')
print (ma.group())

pa = re.compile(r'(imooc)',re.I)
ma = pa.match('imooc python')
print (ma.groups())

print(help(re.match))
ma = re.match(r'imooc','imooc python')
print (ma)
print (ma.group())
print (ma.groups())

三、正则表达式语法

3.1 python正则表达式语法(一)
在这里插入图片描述

import re

ma = re.match(r'.','a')
print (ma.group())
ma = re.match(r'.','0')
print (ma.group())
ma = re.match(r'{.}','{a}')
print (ma.group())
ma = re.match(r'{.}','{0}')
print (ma.group())
ma = re.match(r'{..}','{01}')
print (ma.group())

ma = re.match(r'{[abc]}','{a}')
print (ma.group())
ma = re.match(r'{[a-z]}','{d}')
print (ma.group())
ma = re.match(r'{[a-zA-Z]}','{A}')
print (ma.group())
ma = re.match(r'{[a-zA-Z0-9]}','{0}')
print (ma.group())
ma = re.match(r'{[\w]}','{0}')
print (ma.group())
ma = re.match(r'{[\W]}','{ }')
print (ma.group())
ma = re.match(r'\[[\w]\]','[a]')
print (ma.group())

3.2 python正则表达式语法(二)
在这里插入图片描述

import re

pa = re.match(r'[A-Z][a-z]*','A')
print (pa.group())
pa = re.match(r'[A-Z][a-z]*','Aa')
print (pa.group())
pa = re.match(r'[A-Z][a-z]*','Aaasawea')
print (pa.group())
pa = re.match(r'[A-Z][a-z]*','Aaasa1234')
print (pa.group())

pa = re.match(r'[_a-zA-Z]+[_\w]*','_hell')
print (pa.group())
pa = re.match(r'[1-9]?[0-9]','89')
print (pa.group())
pa = re.match(r'[1-9]?[0-9]','09')
print (pa.group())

pa = re.match(r'[a-zA-Z0-9]{6}','abc123')
print (pa.group())
pa = re.match(r'[a-zA-Z0-9]{6,10}@163.com','imoocedu@163.com')
print (pa.group())

pa = re.match(r'[0-9][a-z]*','1bc')
print (pa.group())
pa = re.match(r'[0-9][a-z]*?','1bc')
print (pa.group())
pa = re.match(r'[0-9][a-z]+?','1bc')
print (pa.group())
pa = re.match(r'[0-9][a-z]??','1bc')
print (pa.group())

3.3 python正则表达式语法(三)
在这里插入图片描述

ma = re.match('[\w]{4,10}@163.com','imooc@163.com')
print (ma.group())
ma = re.match('^[\w]{4,10}@163.com$','imooc@163.com')
print (ma.group())

ma = re.match('^\Aimooc[\w]*','imoocpython')
print (ma.group())

在这里插入图片描述

import re

ma = re.match(r'abc|d','abc')
print (ma.group())
ma = re.match(r'[1-9]?\d$|100','100')
print (ma.group())

ma = re.match(r'[\w]{4,6}@163.com','imooc@163.com')
print (ma.group())
ma = re.match(r'[\w]{4,6}@(163|126).com','imooc@126.com')
print (ma.group())

ma = re.match(r'<[\w]+>','<book>')
print (ma.group())
ma = re.match(r'<([\w]+>)\1',"<book>book>")
print (ma.group())
ma = re.match(r'<([\w]+>)[\w]+</\1',"<book>python</book>")
print (ma.group())

ma = re.match(r'<(?P<mark>[\w]+>)[\w]+</(?P=mark)',"<book>python</book>")
print (ma.group())

四、re模块相关方法使用

4.1 python正则表达式之re模块方法介绍
方法:

#在一个字符串中查找匹配
1:search(pattern,string,flags=0)
#找到匹配,返回所有匹配部分的列表
2:findall(pattern,string,flags=0)
#将字符串中匹配正则表达式的部分替换为其他值
3:sub(pattern,repl,string,count=0,flags=0)
#根据匹配分割字符串,返回分割字符串组成的列表
4:split(pattern,string,maxspilt=0,flags=0)

代码:

import re

str1 = 'imooc videonum = 1000'
print(str1.find('1000'))

info = re.search(r'\d+',str1)
print(info.group())

str2 = 'c++=100,java=90,python=80'
info = re.search(r'\d+',str2)
print(info.group())
info = re.findall(r'\d+',str2)
print(info)
print(sum([int(x) for x in info]))

def add1(match):
    val = match.group()
    num = int(val)+1
    return str(num)

str3 = 'imooc videonum = 9999'
info = re.sub(r'\d+','1001',str3)
print(info)
info = re.sub(r'\d+',add1,str3)
print(info)

str4 = 'imooc:C C++ Java Python'
info = re.split(r':| ',str4)
print(info)
str4 = 'imooc:C C++ Java Python,C#'
info = re.split(r':| |,',str4)
print(info)

4.2 python正则表达式练习
抓取网页中的图片到本地:
抓取网页;获取图片地址;抓取图片内容并保存到本地。

import re
import urllib.request

req = urllib.request.urlopen('https://coding.imooc.com/')
buf = req.read()

#src="//img.mukewang.com/szimg/5cc657ee086fc3e706000338-360-202.jpg"
listurl = re.findall(r'src=".+\.jpg',buf.decode('utf-8'))
strurl = re.sub(r'src="','https:',str(listurl))
strurl = strurl.replace('[','')
strurl = strurl.replace(']','')
strurl = strurl.replace('\'','')
listurl = re.split(r',',strurl)
print(type(listurl))


i = 1
for url in listurl:
    f = open('pic\\'+str(i)+'.jpg','wb')
    req = urllib.request.urlopen(url)
    buf = req.read()
    f.write(buf)
    i += 1
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值