正则表达式库re

网络爬虫:Re库与正则表达式 介绍了正则表达式的相关概念,以及python中的re库对于正则表达式的应用 阅读详情

正则表达式:这是用来简洁表达一组字符串的表达式字符和操作符
优势:简洁
PY+表示以P开头后面有一个乃至无穷多个Y的表达式
“PY”开头,后续存在不多于10个字符,后续字符不能是“P”或“Y”
PY[^PY]{0,10}
正则表达式在文本处理中十分常用
表达文本类型的特征(病毒,入侵)
同时查找或替换一组字符串
匹配字符串的全部或部分

正则表达式的语法

re库的Match对象

match对象是一次运行的结果
match对象的方法:group(0),start(),end()

re库贪婪匹配和最小匹配

re库默认使用贪婪匹配,即最长匹配
最小匹配则需要加?
.表示任何单个字符,表示字符表上出现的任何字符。
[]是字符集,它对单个字符给出取值范围。如:[abc]表示a或b或c
[^]表示非字符集,给单个字符给出排除范围。如
[^abc]为非a或b或c的单个字符
表示前面一个字符0次到无数次扩展,如abc表示ab,abc,abc,abcc等
+表示前面一个字符1次到无数次扩展,如abc+表示abc,abc,abcc等
?表示前面一个字符0次或1次扩展,如abc?表示ab,abc
|表示左右表达式任一个,如abc|def表示abc或def
{m}表示扩展前面一个字符m次,如ab{2}c表示abbc
{m,n}表示扩展前面一个字符m到n次,如ab{1,2}c表示abc,abbc
匹配字符串的开头,如abc表示abc且在一个字符串的开头
匹配字符串的结尾,如abc匹配字符串的结尾,如abc匹配字符串的结尾,如abc表示abc且在一个字符串的结尾
()分组标记,内部只能使用|
\d 等价于 {0-9}
\w 等价于 {A-Za-z0-9_}

例子

1

P(Y|YT|YTH|YTHO)?N
这个正则表达式的意义是从Y,YT,YTH,YTHO四个中任选一个,这个被选到的数出现0次或1次所构成的表达式
PN,PYN,PYTN,PYTHON

2

PY[TH]ON 这个正则表达式的意义是从从T和H两个字符中任选一个,那么它对应的字符串为:
PYTON,PYHON

3

PY[[^TH]?ON这个正则表达式很有意思,它是否定的,而且这个否定可出现一次也可不出现
那么它对应的字符串就知道了
PYON,PY和ON间只要不是TH都可以

4整数形式的字符串

^-?\d+KaTeX parse error: Expected 'EOF', got '\d' at position 11: 这个表达式的意义为:\̲d̲表示数字0-9,+表示0-9出…表示匹配该数的前段和后端

5 IP地址表达的正则表达式

(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])

而在我们爬取淘宝商品的代码中,同样也遇到了正则表达式

plt = re.findall(r’“view_price”:"[\d.]*"’,html)

import requests
import re
def getHTMLText(url):#这个函数的意义是从淘宝界面爬取源代码
    try:
        r = requests.get(url, timeout = 30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding#有时apparent属性和apparent_encoding属性不一致,此时要用encoding
        return r.text
    except:
        return ""
def parserPage(ilt, html):#这是从爬取的源代码分析出价格和名称两个属性,这里的ilt表示获得结果的列表类型,html是获得的页面内容
    try:
        plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)#我们通过分析页面的源代码,即我们爬取到的内容,可以看到,view_price对应着价格
        #而raw_title对应着名称
        #我们使用了正则表达式的findall方法,用\引入了一个"和view_price,用\引入了一个"这里的意义是在获取的页面中提取出来veiw_price之后的内容
        #中数字和小数点混合的部分
        tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)# *?是最小匹配的意义,这里就是匹配键值对,也就是键"raw_price"对应着值"的最小匹配
        for i in range(len(plt)):
            price = eval(plt[i].split(':')[1])#此处用[1]的原因是python的下标从0开始,而这里的plt和tlt都有两个属性,键和值
            title = eval(tlt[i].split(':')[1])
            ilt.append([price , title])
    except:
        print("")
    
def printGoodsList(ilt):#这个是进行输出
    tplt = "{:4}\t{:8}\t{:16}"
    print(tplt.format("序号","价格","商品名称"))
    count = 0
    for g in ilt:
        count = count +1
        print(tplt.format(count, g[0], g[1]))
    
def main():
    goods = '书包'#搜索关键词定义为goods
    depth = 3#此处是设定爬取的深度,在淘宝界面上,每四十四个商品为一页,此处深度为3就是爬取120个商品
    start_url = 'https://s.taobao.com/search?q=' + goods#此处可以对淘宝页面进行分析可知
    infoList = []
    for i in range(depth):
        try:
            url = start_url + '&s=' + str(44*i)
            html = getHTMLText(url)#
            parserPage(infoList, html)#处理每个页面的解析过程
        except:
            continue
    printGoodsList(infoList)
main()

.

Python 内置模块之 re 库,一文搞定正则表达式初阶用法,滚雪球学 Python 第 13 篇 一文搞定 Python 正则表达式初阶用法 阅读详情

相关推荐

分数计算器(C++课设)

需求概述 (1)设计一个分数计算器,进行分数的算术运算和逻辑运算。 (2)能够像使用基本数据的对象一样,对分数进行“+”、“-”、“*”和“/”等算术运算和比较两个分数的大小。 (3)以a/b的形式输入输出分数,允许输入输出整数这种特殊形式。 (4)对不是约化型的分数进行约化,避免分母为负数。 (5)如果分数的分母为0、除数为0或输入时格式有错,采用异常处理机制解决。 输入 以分数的形式输入。(如1/2) 若分母为0会抛出异常,重新输入。 菜单页面 RationalNumber.h(头文件) #ifnd

sadnessss的博客 8770

正则表达式案例练习

现有文本文件data,通过正则表达式输出指定要求的行 (1)以“P”开头 grep -n '^p' data (2)以“y”结尾 grep -n 'y$' data (3)以“m”开头“d”结尾 grep -n '^m.*d$' data (4)以“e”“g”或“l”开头 grep -n '^[egl]' data (5)包含“o”,后面跟“u” grep -n 'ou' data (6)包含“o”,隔一个字母后是“u” grep -n 'o.u' data (7)以小写字母开头

m0_57716176的博客 4433

避坑指南:CoppeliaSim逆运动学仿真常见报错解决方案(附UR5+RG2爪完整Lua脚本)

本文针对CoppeliaSim机器人仿真中常见的逆运动学报错问题,提供了详细的避坑指南和解决方案。文章以UR5机械臂与RG2夹爪组合为例,深入剖析了模型装配、Dummy节点配置、Lua脚本编写等关键步骤中的常见错误,并附带了完整的、带错误处理的脚本代码,帮助用户快速定位并解决IK仿真失败问题,提升仿真效率。

weixin_29054399的博客 267

(学习笔记)python中正则表达式常用知识

原子:原子是表达式的最小组成单位,它可以是普通字符,非打印字符(如换行,制表等),通用字符等对于普通字符,输入一个字符串,如pat="csdn",在匹配时会把它作为四个原子'c','s','d','n'举例: import re //正则表达式的相关内容位于re模块内 pat1='csdn' str1='wasdcsdnss' result=re.search(pat1,str1) print(...

namezhyp的博客 841

linux下wayland协议修改键盘映射

linux下wayland协议,修改键盘映射,实验环境是Ubuntu24,其他wayland协议窗口应该也是可以的。

qq_15027967的博客 1069

【深大计算机网络】实验三 可靠传输机制 实验报告 附代码

【内附代码】【深大计算机网络】实验三 可靠传输机制 实验报告 附代码

m0_74268508的博客 1654

正则表达式--贪婪模式懒惰模式--笔记

视频地址在这里 笔记直接使用pycharm制作,需要源文件请私聊。 import re """ 贪婪模式和懒惰模式 """ string="Pythony" pat="p.*y" #匹配全部p开头y结尾(第一个py被覆盖) rst=re.search(pat,string,re.I) print(rst) string="Poythonydasadcasa" pat1="p.*y" #以贪婪模式运行 较模糊 pat2="p.*?y" #懒惰模式运行

4pri1 226

4.图像sensor的特性和驱动解析

例子:sensor驱动自己提供操作曝光时间的函数和获取曝光时间的函数,然后将这个函数注册到ISP库和3A算法库,3A算法库根据外部光照强度计算出一个Sensor曝光时间的设置值,ISP库得到这个设置值,然后通过Sensor之前注册的回调函数,把这个值设置到Sensor的硬件寄存器中去,实现整个过程。是为 ISP 配置正确的输入时序。(1)修改驱动源码(sambashar\Hi3518E_SDK_V1.0.3.0\package\mpp\component\isp\sensor\ar0130)

weixin_53762042的博客 3569

Linux正则表达式

Linux正则表达式 文章目录Linux正则表达式grep与正则表达式简介grep正则表达式的类型grep的用法grep的常用选项基本正则表达式BREBRE的元字符1.字符匹配2.匹配次数3.位置锚定4.分组扩展正则表达式元字符EREERE的元字符1.字符匹配2.匹配次数3.位置锚定4.分组5.或者 grep与正则表达式简介 文本处理工具中的三剑客–grep、sed、awk grep,grep是根据模式过滤文本,并将符合模式的行显示出来,grep是一组工具集,包括了grep,egrep, fgrep。 s

dingcx2013的博客 624

Smali语言基础语法

定义、声明、调用 Smali数据类型 定义:与Java相同,Smali中也有一套数据类型体系,且该体系实质上是同Java一一对照的。 示例1:Smali——Java数据类型对照表 PS:如上图所示,Smali语言中的数据类型的关键词基本上为Java中同名数据类型的首字母大写,需要着重记忆的例外为:1.long类型的关键词为大写J;2.boolean类型的关键词为大写Z;3.数组的关键词为左半边中括号[;4.object类型(各种类)的关键词为大写L加上该类的全类名路径,路径中的层级用/分割。

aketoshknight的博客 1万+

第14.8章 高翔博士最新开源框架Lightning-LM源码解读(八):位姿平滑器PoseSmoother深度剖析,从原理到代码实现

本文深度解析了高翔博士开源框架Lightning-LM中的位姿平滑器PoseSmoother模块。该模块通过设置平滑因子,在保证位姿准确性的同时减少突变,使位姿变化更平稳。文章详细讲解了模块功能、数据流程和核心代码实现,包括构造函数、拷贝构造函数以及关键的PushDRPose和PushPose函数。重点分析了位姿平滑算法原理,涉及运动有效性校验、位姿队列维护和平滑因子调节等核心机制。此外还介绍了相关C++语法(如显式构造函数、默认拷贝构造)和优化方向。本解析为SLAM学习者提供了位姿平滑处理的实用实现范例。

行知SLAM 607

linux查找固定开头y结尾的正则表达式_Linux正则表达式

一、基础正则表达式(一)基础字符列表正则表达式就是一套处理字符串的规则和方法。以行为单位对字符串进行处理,达到快速过滤或者替换字符串的目的。下面是正则表达式的特殊字符:(二)实例1、测试文件[root@localhost project]# cat test.txt I like code,book what do you like my friends like riding,movie2、测...

weixin_31119221的博客 1039

【原理图PCB专题】Cadence 17.4版本导出excel版本坐标文件

Cadence 17.4版本导出坐标文件往往都是txt格式,并且无标题、导出时间、导出设计工程多名称等信息。那么怎么样才能导出有带这些信息的excel版本并格式好看的坐标文件呢?

一点硬件 2765

python中re是什么库_Python正则表达式和re库知识点总结

正则表达式是定义搜索模式的字符序列。通常这种模式被字符串搜索算法用于字符串上的“查找”或“查找和替换”操作,或者用于输入验证。1. 正则表达式的语法. 表示任何单个字符[] 字符集,对单个字符给出取值范围[^] 非字符集,对单个字符给出排除范围*前一个字符0次或者无限次扩展+前一个字符1次或无限次扩展?前一个字符0次或1次扩展|左右表达式任意一个{m}扩展前一个字符m次{m,n}扩展前一个字符m至...

weixin_39540023的博客 3197

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

基于pycharm的正则表达式Re库使用教程

基于pycharm的正则表达式Re库使用教程正则表达式语法Re库的基本使用Match对象Match对象的属性Match对象的方法正则表达式的常用方法re.search()re.match()re.findall()re.split()re.finditer()re.sub()re.compile() 正则表达式语法 正则表达式在编程语言、数据库等领域都应用广泛,可以自己总结知识点,等忘记了再回来查看,当然也有专门的正则表达式网站。 Re库的基本使用 Re库是Python的标准库,不用我们安装,其主要用于字

❀雾里看花花里看雾❀ 4720

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python正则表达式:re库的使用

一、re re库是Python中使用正则表达式需要用到的库,是Python的标准库,无需安装,直接导入 二、正则表达式的表示类型 1、raw string类型(原生字符串类型):如r’[1-9]\d{5}’ 2、string类型,更加繁琐(将斜杠表示为转义字符):如‘[1-9]\d{5}’ 三、re库的功能函数 pattern:正则表达式的字符串或原生字符串 string:待匹配字符串 flags:正则表达式使用时的控制标记 flags常用取值: (1)re.I或re.IGNORECASE:忽略正则表达式

qq_41817925的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

正则表达式Re库介绍

Re库是python的标准库,Re库采用raw string(原生字符串类型)表示正则表达式,如 r’[1-9]\d{5}’。 调用方法 : import re 使用原生字符串(即不包含转义符的字符串)类型表示正则表达式会更方便。python有一个转义斜杠’’,在原生字符串中斜杠’'不会被解释成转义符。正则表达式也可以用String类型来表示,但是很繁琐。 电话号码的两种正则表达式写法比较: ...

weixin_40763897的博客 2426

爬虫笔记(三)——re正则表达式库

本文超详细整理了爬虫当中Re正则表达式库的各种知识点,满满的干货,非常适合收藏起来复习用哦~,希望能够对你有所帮助。

Mr.Q_LuLu的博客 2247

正则表达式(re库)

match对象中的属性:.string待匹配文本.re匹配时使用的pattern对象(正则表达式).pos正则表达式搜索文本的开始位置.endpos正则表达式搜索文本的结束位置match对象的方法.group()获得匹配后的字符串.start()匹配字符串在原始字符串中的开始位置.end()匹配字符串在原始字符串中的结束位置.span()返回(.start(),.end())

2302_80073955的博客 815

re库及正则表达式的介绍及实战

Python的re库是处理正则表达式的内置轻量高效:内置库无需依赖,匹配速度快;功能全面:覆盖爬虫所需的“匹配、提取、替换”所有场景;易用性强:API设计简洁,结合爬虫数据提取场景极易上手。正则表达式的核心逻辑:无需死记符号,关键是「特征拆解」—— 先明确提取需求,分析目标字符串的格式特征,再将特征转化为正则符号组合,最后通过测试调整验证规则,复杂场景需分层拆解 “固定格式 + 可变内容 + 干扰项”,结合分组、断言等高级语法优化规则。re 库方法的场景化使用。

Superfei_的博客 1195

Python 库学习 —— Re 正则表达式

对于正则表达式其实网上有很多说明,而且各种校验都比较全面了,很多时候其实不需要我们写,直接网上搜。但当我们拿到一个正则表达式时,我们要能看懂。所以,下面给出一个常用操作符,忘记了可以看看。 文章目录系列文章正则表达式常用操作符Re库主要功能函数 系列文章 Python 学习 01 —— Python基础 Python 库学习 —— urllib 学习 Python 库学习 —— BeautifulSoup4学习 Python 库学习 —— Re 正则表达式 Python 学习 02 —— Python.

zcy的博客 1610

Re库以及正则表达式 - Python

个人学习笔记 视频网站: https://www.bilibili.com/video/av9784617?p=39 ① 正则表达式1 图片源自:博客园某博主… ② Re库 一. 正则表达式的表示类型 raw string类型(原生字符串类型) re库采用raw string类型表达正则表达式, 表示为: r'text' 例如: r'[1-9]\d{5} raw string 是不...

Clearlight's Blog 1258

python网页爬虫之re库及正则表达式(含实例)

python网页爬虫之re库及正则表达式 正则表达式 regular expression 简称“RE” 正则表达式是用来简洁表达一组字符串的表达式。 ‘PY’ ‘PYY’ ‘PYYYYY…’ 正则表达式: PY+ ‘PY’开头,后续存在不多于10个字符,后续字符不能是‘P’或‘Y’ ‘PYABC’ √ ‘PYKXYZ’ × 正则表达式: PY[^PY]{0,10} 正则表达式: 1)通用的字符串...

Slime 4756

正则表达式——re库的一些常用函数

目录前言一、主要函数介绍以及使用1-1、re.search()1-2、re.match()1-3、re.findall()1-4、re.split()1-5、re.finditer()1-6、re.sub()1-7、另一种用法二、正则表达式的常用操作符三、Match对象的相关属性四、注意事项总结 前言 Re库是Python的标准库,主要用于字符串匹配,调用方式:import re 一、主要函数介绍以及使用 如果不熟悉pattern内的操作符可以先看二。 如果想要了解Match对象的相关属性可以先看三。

艰难困苦,玉汝于成。 1766

Re(正则表达式)库入门

Python中Re库的入门学习。正则表达式很重要,在很多方面都有应用。文章举了很多的例子,生动形象。更容易理解。

日常学习记录 1681

Python 爬虫正则表达式和re库,及re库的基本使用,提取单个页面信息

正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下,正则表达式在所有编程里通用,所以不仅仅是python使用。2:第二个信息,电影名称,有很多地方,但是我们选个唯一明显不重复的,alt= 后面是标签里唯一的,整个标签里面就一个信息,所以这里比较简单,这时正则表达式为。re.findall()在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。em是唯一的,比较简单。

2554
上一篇: Microsoft Access 2010 错误 单击:用户定义类型定义
下一篇: 股票数据定向爬取
人生无根蒂,飘如陌上尘
博客等级 码龄9年 224粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值