python3 爬虫相关学习10:RE 库/ regex /regular experssion)正则表达式学习

news2024/12/23 12:11:29

目录

1 关于:re / regex / regular expression 

1.1 什么是正则表达式

1.2 在python中导入 re

1.3 查看regex相关信息

2  正则表达式的相关符号

2.1 行定位符

2.2 元字符 (注意是 反斜杠\)

2.3 限定符号

2.4 字符类,字符集合 需要 中括号[]

2.5 排除字符   [^ ]

2.6 选择字符 |

2.7 转义字符 反斜杠 \

2.8 分组符号  ()

2.9 正则表达式需要用   " " 引号,但是要小心各种特殊符号

3  正则表达式的方法


1 关于:re / regex / regular expression 

1.1 什么是正则表达式

  • regular expression 正则表达式
  • 是计算机科学的一个概念
  • 是一个跨多种编程语言的语言格式

1.2 在python中安装正则  pip install regex (安装时不是 re !)

  • 导入 re 模块 
  • 模块其实可以认为是一个  .py文件
  • 错误写法: pip install  re
  • 正确写法:   pip install  regex

1.3 查看regex相关信息

  • pip list
  • pip show regex

1.4 在python中导入 re :  import re

  • 导入 re 模块 
  • 模块其实可以认为是一个  .py文件
  • 正确写法:    import re

2  正则表达式的相关符号


2.1 行定位符

用来描述字符串的边界,1行的边界?全部字符串的边界把? 可以叫做 字符串整体定位符?^ ^

^       #表示字符串开头

$      #表示字符串结尾

2.2 元字符 (注意是 反斜杠\)

\w   #匹配 字母,数字,下划线等,还有各自文字,比如汉字

\W   #^w 非w

\s     # 匹配空格,换行,tab 等几种看不见的内容 也就是:空格 \n  \t

\S    #^s 非s

\b    #begin 单词的开始的意思  如 \bw 匹配单词(不是整个字符串)开始的字母,数字,下划线等,所以  \b不同于 ^

\d     # 匹配数字

.      #  任意字符

三种括号也是有特殊意义的

()    #匹配方括号的每个字符,比如(fruit|food)s 表示 fruits|foods

[]    # 匹配方括号的任一个字符,比如 [abc] 表示 a,b ,c 都可以

{}   # 限定次数符号,看下面

2.3 限定(次数)符号 : 次数 * + ? 以及{}

*         # 匹配前面的字符0次/无限次

+        # 匹配前面的字符1次/无限次   

?        # 匹配前面的字符0次/1次,常用于 .*? 这种非贪婪模式

{n}      # 匹配前面的字符n次

{n,}     # 匹配前面的字符至少n次

{n,m}  # 匹配前面的字符 最少n次,最多m次, n-m次之间的都符合

e.g

^/d{8}     #匹配8个数字

.*s          #非贪婪匹配任意个数字

2.4 字符类/字符集合 需要 中括号 [ ]

[abcd]                      # 匹配abcd中的任意一个都可以

[12345]                    # 匹配1-5中的任意一个都可以

[0-9]                         # 匹配任意一个数字,等同于\d

[a-z0-9A-Z]              # 匹配所有英文字母,数字,几乎等同\w 是\w的子集(不含汉字等)

2.5 排除字符   [^ ]

关键字 ^

/W                   # 相当于/^w,但是写法不对,必须写在中括号里 [^]  写在外面还是表示字符串开始

[^a-zA-Z]         # 相当于非英文字母以外的其他任意字符

2.6 选择字符 |

选择

条件选择   | 表示or的意思

e.g.

^\d{5}|^\d{6}

2.7 转义字符 反斜杠 \

  • 转义字符
  1. 把 普通字符变成特殊意义的字符, n 转成 \n 换行符
  2. 把 特殊字符变成普通字符,   \* 表示 普通字符 *    \. 表示 普通字符 .

2.8 分组符号  ()

(fruit|food)s                 #表示 fruits|foods

([abc]{1,3}){3}             #表示 [abc]1到3个,然后再来3个,一会试试

2.9 正则表达式需要用引号"" 包裹起来

如果有特殊符号,表达式前还要注意加 r

  • 比如一般的
  • ".*?"
  • 实际使用时, 如果包含特殊符号,记得使用 r (rawdata)
  • r"https://movie.douban.com/apex"

2.10 贪婪模式 / 非贪婪模式

贪婪模式

匹配符合条件的最多的字符数

非贪婪模式

匹配符合条件的最少的字符数

  • .*?        #非贪婪模式
  • *?
  • ??
  • +?
  • {n,m}?


 

3  正则表达式的方法

3.1 匹配和查找相关

  • re.match()
  • re.search()
  • re.find()
  • re.findall()


3.2 相同点和差别

  • re.match()
  • re.search()
  • re.find()
  • re.findall()

3.3 re.match()

  • 语法
  • re.match(pattern,  string , flags=0)
  • 必须从字符串开头开始匹配
  • 返回  none/ 以(符合正则格式的)某字符串开头的 字符串

非贪婪匹配,如果一直到末尾,往往会匹配一个尽量少的字符串=none 空字符串

#E:\work\FangCloudV2\personal_space\2learn\python3\py0004.txt
# re相关


import re

str1=re.match("^\w*","abc123ABC456")
print (str1)
print (type(str1))
print (str1.group())
print (type(str1.group()))
print ("")

str2=re.match("^\w*?","abc123ABC456")
print (str2)
print (type(str2))
print (str2.group())
print (type(str2.group()))
print ("")


str3=re.match("abc","abc123ABC456",re.I)
print (str3)
print (type(str3))
print (str3.group())
print (type(str3.group()))
print ("")

 

 

3.3.1  re.match().group()

  • 返回一个数组?
  • 数组式的字符串
  • 默认参数为0,默认返回所有匹配到的字符串

3.3.2  re.match().span()

  • 返回一个数组?
  • 数组式的字符串
  • 默认参数为0,默认返回所有匹配到的字符串

3.5 re.search()

  • 语法
  • ​search(pattern, string, flags=0)
  • 可以从字符串的任何地方开始查找匹配


 

3.6  re.find()

  • 语法
  • find(pattern, string, flags=0)
  • 返回none 或者

3.7  re.findall()

  • 语法
  • findall(pattern, string, flags=0)
  • 返回一个列

3.8 re.sub()

  • 语法
  • sub(pattern, repl, string, count=0, flags=0)
  • 在string内部,按正则 pattern 去替换 repl ,数量为 count 次

3.9 re.finditer

3.10 re.compile()

编译正则表达式

compile(pattern, flags=0)

3.11  re.split()

  • 分隔
  • 语法
  • split(pattern, string, maxsplit=0, flags=0)
  • 按 pattern 去分割 string,
  • 并且返回一个列表!

继续看完

Python正则表达式用法总结_regex re python_zorchp的博客-CSDN博客正则表达式的Python实现以及re库的常用方法总结。https://blog.csdn.net/qq_41437512/article/details/107978327

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Site-to-Site VPN配置和调试实践:构建安全的远程网络连接

Site-to-Site VPN配置和调试实践:构建安全的远程网络连接 【实验目的】 理解Site to Site VPN的含义。掌握Site to Site VPN的含义。验证配置。 【实验拓扑】 实验拓扑如下图所示。 实验拓扑 设备参数表如下表所示。 设备参数表 设备 接口 IP地址 子网掩码…

一组网格加载动画

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网格动画</title><style>import url("https://fonts.googleapis.com/css2?familyOrb…

蓝牙ble的常见概念

蓝牙广播 包组成结构 低功耗蓝牙一共有40个信道&#xff0c;频段范围从2402Mhz-2480Mhz&#xff0c;每2Mhz一个信道&#xff0c;37 38 39 是广播信道&#xff0c;其余为数据信道 一个广播信道最长37字节&#xff0c;有6字节用作蓝牙设备的MAC地址&#xff0c;我们只需要关注剩…

tftp服务器环境搭建与nfs服务器环境搭建

目录 tftp 服务器环境搭建 实验步骤&#xff1a; nfs 服务器环境搭建 实验步骤 tftp 服务器环境搭建 实验步骤&#xff1a; 一、 tftp 服务器环境搭建 1 、 打开一个命令行终端&#xff0c;执行如下命令查看是否已安装 tftp 服务器 $ dpkg -s tftpd-hpa 若显示如下信…

vue可视化面板创建项目

前端项目初始化步骤 安装 vue 脚手架 通过vue脚手架创建项目 在命令行输入vue ui 等待可视化界面打开 填写项目名称&#xff08;必须英文&#xff09;和仓库信息(可选填&#xff09;&#xff0c;然后点击下一步进入“预设面板” 这里根据需要选择一个选项&#xff0c;然后…

Node.js入门之 - 初识Node.js

初识 Node.js 1. 起源 Node.js 起源于 2009 年,由 Ryan Dahl 开发,起初的目的是为了解决一些网络应用运行缓慢的问题。 在 Node.js 之前,一般会采用 LAMP(Linux Apache MySQL PHP)或者 MEAN等技术栈开发 web 应用。这些技术通常会采用请求-响应模型: 客户端(浏览器)发送一…

机器学习 day19(使用python和np实现前向传播)

烤咖啡豆模型 使用一维数组来表示这些向量和参数&#xff0c;所以只有一个方括号W1_1&#xff1a;表示layer 1的第一个神经元的WZ1_1&#xff1a;表示 W1_1和输入X之间的点积&#xff0c;再与b1_1相加a1_1&#xff1a;表示应用Z1_1的sigmoid函数a1&#xff1a;表示把a1_1&…

Explain和索引基本优化示例

一、Explain介绍 1、Explain不用版本的使用 在mysql8.0版本只能用explain&#xff0c;已经弃用了explain extended和explain partitions&#xff0c;用了都会出现语法问题&#xff0c;只能用explain&#xff1b;在explain语句后面加上show warnings;可以查看mysql优化后的语句…

市场·分析

寡头垄断市场 完全竞争市场 完全垄断 垄断竞争 博弈论与寡头竞争理论 寡头市场的特征&#xff1a; 少量的企业竞争策略互动纯寡头 -生产相同产品的企业 -市场上只有一个价格差异化寡头 -生产差异化产品的企业 -价格成为决策变量 博弈论基础 博弈论模型描述个体在知道他所采…

用flex布局实现一个流程设计器

最近接到一个需求&#xff0c;要做一个流程设计的功能&#xff0c;大概长下面这个样子&#xff1a; 支持添加、编辑和删除节点&#xff0c;节点只有四种类型&#xff1a;开始节点、普通节点、分支节点、结束节点。 因为每个节点只有一个进和一个出&#xff0c;且节点不需要支持…

一文扫盲 OA、CRM、ERP、MES、HRM、SCM、WMS、KMS 等B端系统

OA系统 &#xff08;Office Automation System&#xff0c;办公自动化系统&#xff09;&#xff1a;OA系统是一种用于协调、管理和优化办公流程的软件系统&#xff0c;包括电子邮件、日程安排、文档管理、工作流程管理等功能模块&#xff0c;帮助企业提高工作效率和管理水平。…

C#程序的内存映射文件解析

一、背景 前段时间训练营里有朋友问 内存映射文件 是怎么玩的&#xff1f;说实话这东西理论我相信很多朋友都知道&#xff0c;就是将文件映射到进程的虚拟地址&#xff0c;说起来很容易&#xff0c;那如何让大家眼见为实呢&#xff1f;可能会难倒很多人&#xff0c;所以这篇我…

《项目实战》构建SpringCloud alibaba项目

文章目录 1、概要2、整体架构流程2.1、技术结构组成部分 3、技术名词解释4、技术细节4.1、构建父工程4.1.1、选择构建Maven项目4.1.2、修改父工程文件4.1.3、修改父工程pom.xml配置4.1.3.1、添加springboot支持4.1.3.2、修改JDK版本、编码、springboot版本配置4.1.3.3、添加Spr…

自定义MaterialEditText

自定义MaterialEditText 日记 现在都不流行写博客了&#xff0c;因为这玩意都认为对于面试没啥用&#xff0c;我感觉很多事情不应该太功利。所谓博客还是更多的应该用来进行自己日常学习的归纳和总结&#xff0c;而不是去贪图所谓的面试加分。因为面试可能是一时的&#xff0…

Apple Vision Pro的价格并没有看起来那么疯狂

When Apple announced the price of their groundbreaking new mixed reality headset, the Vision Pro, jaws around the world collectively dropped. At a hefty $3,499, it’s not for everyone, but is it really so unreasonable if we take a closer look? 当苹果宣布其…

CSS特性、背景属性和显示模式

CSS特性 CSS特性&#xff1a;化简代码 / 定位问题&#xff0c;并解决问题 继承性层叠性优先级 继承性 继承性&#xff1a;子级默认继承父级的文字控制属性。 注意&#xff1a;如果标签有默认文字样式会继承失败。 例如&#xff1a;a 标签的颜色、标题的字体大小。 层叠性 …

前端 sentry 接入钉钉机器人

sentry 接入钉钉机器人 打开钉钉,添加机器人 此时会得到Webhook地址,记录一下,以后会用到 sentry 端设置 看看这里有木有钉钉插件,有的话开启插件,并配置这里我说一下没有的情况下,我们何如设置 这里需要填写webhook url 这个的url 需要是一个公网的地址,不可以是本地…

HID协议学习

HID协议学习 0. 文档资料 USB_HID协议中文版_USB接口HID设备_AUJsRmB9kg.pdf HID报告描述符精细说明_mgCxM8_ci9.pdf hut1_22_U3cvnwn_ZZ.pdf 1. 基本概念 HID协议是一种基于USB的通讯协议&#xff0c;用于在计算机和输入设备之间进行数据传输。HID协议定义了标准的数据格…

动态规划算法(子数组专题1)

动态规划算法专辑之子数组问题&#xff08;1&#xff09; 本专栏将从状态定义、状态转移方程、初始化、填表顺序、返回值这五大细节来详细讲述动态规划的算法的解题思路及代码实现一、什么是子数组 子数组&#xff1a;子数组是数组中的一个连续部分的集合&#xff0c;子序列可…

Python+Selenium UI自动化测试环境搭建及使用

目录 一、什么是Selenium &#xff1f; 二、Selenium环境搭建 三、WebDriver API 总结&#xff1a; 一、什么是Selenium &#xff1f; Selenium 是一个浏览器自动化测试框架&#xff0c;它主要用于web应用程序的自动化测试&#xff0c;其主要特点如下&#xff1a;开源、免费…