【python】网络爬虫与信息提取--正则表达式

一、正则表达式

        正则表达式是用来简洁表达一组字符串的表达式。是通用的字符串表达框架,简洁表达一组字符串的表达式,针对字符串表达“简洁”和“特征”思想的工具,判断某字符串的特征归属。

        用处:表达文本类型的特征;同时查找或替换一组字符串;匹配字符串的全部或部分。

        编译:将符合正则表达式语法的字符串转换成正则表达式特征。

        语法:正则表达式由字符和操作符构成。

        正则表达式的常用操作符:

        实例:

        

二、RE库的基本使用

        RE库是python的标准库,主要用于字符串的匹配。

        调用方法:import re

        RE库使用raw string类型来表达正则表达式,表示为:r'text',例如:r'[1-9]\d{5}';也使用string类型,但是由于string类型中将斜杠理解为转义符,所以会更加繁琐,例如:'[1-9]\\d{5}'。综上,当正则表达式包含转义符时使用raw string。

        re库的主要功能函数:

 re.search(pattern,string,flags=0)        

         pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        flags:正则表达式使用时的控制标记

        例子:我们匹配的字符串是BIT100081

re.match(pattern,string,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        flags:正则表达式使用时的控制标记

        仔细看下这个错误提示,NoneType这说明现在由match函数返回的变量match它并没有一个属性叫group,也就是说这个match是空的。我们知道,这边所用的正则表达式表示了一个中国区的邮政编码,而它从后边的string类型中,从起始位置开始匹配,但我们给出的string起始位置并不是邮政编码,因此它的正则表达式匹配结果应该是空。所以我们在使用之前一定要先判断这个match是不是空的。

re.findall(pattern,string,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        flags:正则表达式使用时的控制标记

re.split(pattern,string,maxsplit=0,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        maxsplit:最大分割数,剩余部分作为最后一个元素输出

        flags:正则表达式使用时的控制标记

        maxsplit=1表示只匹配第一个位置,匹配之后它将BIT分割出来

re.finditer(pattern,string,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        string:待匹配字符串

        flags:正则表达式使用时的控制标记

re.sub(pattern,repl,string,count=0,flags=0)

        pattern:正则表达式的字符串或原生字符串表示

        repl:替换匹配字符串的字符串

        string:待匹配字符串

        count:匹配的最大替换次数

        flags:正则表达式使用时的控制标记

 

RE库的另一种等价用法

        re.compile(pattern,flags=0):将正则表达式的字符串形式编译成正则表达式对象。pattern:正则表达式的字符串或原生字符串表示,flags:正则表达式使用时的控制标记。

三、RE库的match对象

        match对象就是一次匹配的结果,它包含了很多匹配的相关关系,

match对象的属性 

        只有经过compile的正则表达式才是真正的正则表达式,如果没经过,就是compile的一种表示。

四、Re库的贪婪匹配和最小匹配

        r'PY.*n'表示以PY字母开头,以N结尾,之间可以有若干个字母的字符串。

        贪婪匹配:RE库默认采用贪婪匹配,即输出匹配最长的子串。

        输出最短的子串:

        最小匹配操作符: 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/392323.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】_HTTP请求报头header

目录 1. Host 2. Content-Length与Content-Type 2.1 Content-Length 2.2 Content-Type 3. User-Agent(UA) 4. Referer 5. Cookie header的整体格式是“键值对”结构,一行是一个键值对,这些键值对都是HTTP定义好的、有特殊含…

【Leetcode刷题笔记】27. 移除元素

原题链接 Leetcode 27. 移除元素 题目 给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。…

算法练习-赎金信(思路+流程图+代码)

难度参考 难度:中等 分类:哈希表 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨…

C#,整数转为短字符串(Short string)的加解密算法与源代码

1 整数转为短字符串的应用 网站生成的动态 URL 往往以内容序列号id为标识与参数,比如: http://www.jerry.com/tom.aspx?id1 使用 Web Rewrite,可以实现网页静态化,称为: http://www.jerry.com/content/1.html 对…

FlashMeeting(基于FFmpeg+openCV)视频语音通讯系统

Web端体验地址:https://download.csdn.net/download/XiBuQiuChong/88805337 客户端下载地址:https://download.csdn.net/download/XiBuQiuChong/88805337 FlashMeeting(基于FFmpegopenCV)是一整套先进的以FFmpegopenCV技术为基础的视频语音通讯系统。利…

数据库设计、JDBC、数据库连接池

数据库设计 数据库设计概念 数据库设计就是根据业务 系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。建立数据库中的表结构以及表与表之间的关联关系的过程。有哪些表?表里有哪些字段?表和表之间有什么关系? 数据库设计的步骤…

Java并发基础:ConcurrentSkipListSet全面解析!

内容概要 ConcurrentSkipListSet类在多线程环境下,它能够轻松应对大量的插入、删除和查找操作,同时保持数据的完整性和一致性,其内部基于跳表数据结构的实现,确保了即使在处理大规模数据时,也能具有出色的性能表现。 …

基于微信小程序的健身房私教预约系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

类的构造方法

在类中,出成员方法外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每个类实例化一个对象时,类都会自动调用构造方法。 构造方法的特点: 构…

文件上传漏洞--Upload-labs--Pass01--前端绕过

一、前端绕过原理 通俗解释,我们将写有恶意代码的php后缀文件上传到网页,网页中的javascript代码会先对文件的后缀名进行检测,若检测到上传文件的后缀名为非法,则会进行alert警告。若想上传php后缀的文件,就要想办法对…

Acwing---877. 扩展欧几里得算法

扩展欧几里得算法 1.题目2.基本思想3.代码实现 1.题目 给定 n n n 对正整数 a i ai ai, b i bi bi,对于每对数,求出一组 x i xi xi, y i yi yi,使其满足 a i x i b i y i g c d ( a i , b i ) aixibiyigcd(ai,bi) aixibiyigcd(ai,bi)…

K8s进阶之路-安装部署K8s

参考:(部署过程参考的下面红色字体文档链接就可以,步骤很详细,重点部分在下面做了标注) 安装部署K8S集群文档: 使用kubeadm方式搭建K8S集群 GitBook 本机: master:10.0.0.13 maste…

pytorch 实现线性回归(深度学习)

一 查看原始函数 初始化 %matplotlib inline import random import torch from d2l import torch as d2l 1.1 生成原始数据 def synthetic_data(w, b, num_examples):x torch.normal(0, 1, (num_examples, len(w)))y torch.matmul(x, w) bprint(x:, x)print(y:, y)y tor…

JavaWeb-JDBC-API详解

一、JDBC介绍 二、JDBC 快速入门 package com.itheima.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;public class JDCBDemo {public static void main(String[] args) throws Exception {//1、注册驱动Class.forName("co…

django中事务和锁

目录 一:事务(Transactions) 二:锁 在Django中,事务和锁是数据库操作中的两个重要概念,它们用于确保数据的完整性和一致性。下面我将分别解释这两个概念在Django中的应用。 一:事务&#xff…

Code Composer Studio (CCS) - Breakpoint (断点)

Code Composer Studio [CCS] - Breakpoint [断点] 1. BreakpointReferences 1. Breakpoint 选中断点右键 -> Breakpoint Properties… Skip Count:跳过断点总数,在断点执行之前设置总数 Current Count:当前跳过断电累计值 References […

Ubuntu学习笔记-Ubuntu搭建禅道开源版及基本使用

文章目录 概述一、Ubuntu中安装1.1 复制下载安装包路径1.2 将安装包解压到ubuntu中1.3 启动服务1.4 设置开机自启动 二、禅道服务基本操作2.1 启动,停止,重启,查看服务状态2.2 开放端口2.3 访问和登录禅道 卜相机关 卜三命、相万生&#xff0…

第13章 网络 Page738~741 13.8.3 TCP/UDP简述

libcurl是C语言写成的网络编程工具库,asio是C写的网络编程的基础类型库 libcurl只用于客户端,asio既可以写客户端,也可以写服务端 libcurl实现了HTTP\FTP等应用层协议,但asio却只实现了传输层TCP/UDP等协议。 在学习http时介绍…

CSS概述 | CSS的引入方式 | 选择器

文章目录 1.CSS概述2.CSS的引入方式2.1.内部样式表2.2.行内样式表2.3.外部样式表 3.选择器 1.CSS概述 CSS,全称Cascading Style Sheets(层叠样式表),是一种用来设置HTML(或XML等)文档样式的语言。CSS的主要…

Code Composer Studio (CCS) - Current and Local Revision

Code Composer Studio [CCS] - Current and Local Revision References 鼠标放在文件内的任意位置,鼠标右键 -> Compare With -> Local History -> Revision Time. References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/