正则表达式:

什么是正则表达式:

正则表达式就是数据筛选的表达式;

原子:

原子是正则表达式中最基本组成单位,每个正则表达式中至少包含一个原子。常见的原子类型有:
a,普通字符作为原子
b,非打印字符作为原子(\t,\n)
c,通用字符作为原子
d,原子表
\w:匹配字母,数字,下划线;
\d:匹配任意的十进制数;
\s:匹配空白的字符;
\W:匹配\w相反的对象,即除了字母,数字下划线之外的任意的字符;
\D:除了十进制外的任意的字符;
\S:除了空白字符以外的任意字符。

原子表
import re
pat=pyth[jsz]n
string="dsjfkljajpythsnssdd"
rst=re.search(pat,string)
print(rst)
输出: pythsn
------------------------------------------------------
import re
pat=pyth[jsz]n
string="dsjfkljajpythsznssdd"
rst=re.search(pat,string)
print(rst)
输出: none
元字符:

.:匹配任何字符(除了换行符以外);
^:匹配开始的位置
$:匹配字符串中结束的位置
*(星号) :匹配重复多次,一次,零次。
?匹配重复零次或者一次;
+:匹配重复一次或者多次;
{n}:前面的原子重复了n次;{n,}前面的原子至少出现的n次;{n,m}出现的此数在n,m之间

模式修正符:

可以在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义,从而实现一些匹配结果的调整功能。

import re
part1="python"
part2="python"
string="jdkatuajvklajfsefPythondjkldsv"
rst=re.search(part1,string)
此刻匹配不出来  [^j]:非j,其他都行
rst=re.search(part2,string,re.I)   # I不区分大小写。
贪婪模式和懒惰模式:

贪婪模式:尽可能多的去匹配;
懒惰模式:尽可能少的去匹配;更精准的定位

import re 
pat1="p.*y"			#.匹配任意字符;*匹配多次,一次,零次。贪婪模式
pat2="p.*?y"			#懒惰模式
string="abcddjpythonvdghpy"
rst=re.search(pat1,string)
print(rst)
>><re.Match object; span=(6, 18), match='pythonvdghpy'>
rst=re.search(pat12,string)
>><re.Match object; span=(6, 8), match='py'>
正则表达式函数:

正则表达式函数有re.match()函数从头开始搜索,,头不匹配,立马结束;re.search()函数,字符串可以出现在任何位置,但是最终只能给出一个结果;全局匹配函数re.compile(pat).findall(string)可以输出所有的满足条件的结果用的最多;re.sub()函数。

import re
pat="python"
string="aaffdjfpythonievk"
rst=re.match(pat,string)
print(rst)
>>None
简单的爬虫:
常见正则实例:如何匹配.com或.cn网址,以及如何匹配电话号码
import re
pat="[a-zA-Z]+://[^\s]*[.com|.cn]"
string='<a href="http://www.baidu.com>hasghj</a>'
rst2=re.compile(pat).findall(string)
print(rst2)
>>['http://www.baidu.com']
从网页中提取出qq群:
import urllib.request
import re
pat="<em>QQ:(.^?)</em>"
data=urllib.request.urlopen("http://edu.csdn.net/huiyiCouse/detail/215").read()
rst=re.compile(pat).findall(str(data))
print(rst)
>>['62546562']
如何爬取豆瓣网提取出版社信息并写入文件:
import urllib.request
import re
url = "https://read.douban.com/provider/all"  # 确定要爬取的入口链接 
# 模拟成浏览器并爬取对应的网页 谷歌浏览器
headers = {'User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read().decode('utf8')
# data=urllib.request.urlopen("https://read.douban.com/provider/all").read().decode("utf-8")
print(len(data))
pat='<div class="name">(.*?)</div>'	  #(.*?)懒惰模式 
rst=re.compile(pat).findall(data)
print(rst)
fh=open("F:/text.txt","w")
for i in range(0,len(rst)):
    fh.write(rst[i]+"\n")
fh.close()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AppleYRY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值