正则表达式---【Python版】

目录

前言

一.正则表达式概括

1.1简介

1.2使用场景

二.正则表达式语法

2.1基本匹配

2.2元字符

2.2.1点运算符.

2.2.2字符类[]

2.2.3否定字符类

2.2.4*号

2.2.5+号

2.2.6?号

2.2.7{}号

2.2.8()号

2.2.9|或运算

 2.2.10转码特殊字符\

2.2.11^和$

2.3简写字符

前言

一个正则表达式在线练习网站:

练习网站

学习正则表达式,一定要多加练习,效率翻倍!

一.正则表达式概括

1.1简介

正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子,正则表达式常用缩写是:“regex”、“regexp

例如:寻找“T”开头的英文单词

1.2使用场景

使用正则表达式可以很方便的帮我们在大量“字符串”中搜寻到我们想要的信息,如果我们爬取某个网站的HTML,需要当中的某个信息,可以使用正则表达式搜寻

再比如某些算法题牵扯到字符串,我们也可以使用正则表达式来匹配

二.正则表达式语法

2.1基本匹配

基本匹配很简单,比如我们就需要“the”这个单词,那么写下即可:

因此基本匹配,多用于我们需要一个“固定且唯一”的结果

2.2元字符

如果我们需要匹配动态变化的字符串,就需要用到元字符

而正则表达式也主要依赖于“元字符”实现复杂匹配

元字符介绍:

元字符描述
.句号匹配任意单个字符
[]字符种类,匹配方括号内的任意字符
[^]否定的字符种类,匹配除了方括号内字符的任意字符
*匹配>=0个的重复的在*号前的字符
+匹配>=1个的的重复的在+号前的字符
?标记之前的字符为可选[匹配或不匹配]
{n,m}控制匹配数量,匹配num个大括号之前的字符或字符集(n<=num<=m)
(xyz)字符集,匹配与xyz完全相同的字符串
|或运算符,匹配符号前或后的字符
\转义字符,匹配一些保留字符如“[]”、“()”、“+”、“?”等
^从开头向末尾匹配
$从末尾向前匹配

下面开始依次介绍“13”种元字符

2.2.1点运算符.

.是元字符中最简单的元字符,.匹配任意单个字符,但不匹配换号符

如“.he”用于匹配:“任意一个字符后跟着he”的字符串

 

2.2.2字符类[]

字符类[]也叫字符集,在方括号中的“连字符”来指定字符集的范围,在方括号中的字符不关心顺序,如果某个字符在字符集中出现过,那么该字符就会被匹配到,相当于编程中的如下伪代码

if s in 字符类:

   s is a target

 

注意:如果在字符类中出现“.”,则此时表示匹配“.”号,而不是任意一个字符,这是因为字符类的优先级大于“.”点元字符!!

2.2.3否定字符类

匹配除了方括号内字符的任意字符,一般“^”放在句子开头,用于表示这个字符类是否定的

 

2.2.4*号

*号匹配在*之前出现大于等于0次的字符,也就是说使用*号可以匹配没有出现过的字符!!

 

可以看到“the”、“he”都被匹配到了,因为“t”此时可以出现一次出现多次都是符合要求的!!

使用“.”和“*”搭配,可以匹配所有的字符串

2.2.5+号

+号匹配+号之前字符出现大于等于1次,也就是前面的字符至少出现一次!

 

2.2.6?号

号表示在字符前面的字符为可选,即“出现1次”或“出现0次”,这与“*”号是有区别的,“*”号是“出现0次”或“出现n次

 

2.2.7{}号

{}是一个范围量词,用来限定一个字符一个字符集可以重复出现的次数

{}内可以是一个“固定值”,用来表示出现固定次数

也可以是一个[n,m]的区间,用来表示出现[n,m]次的都可以

 固定值:

范围区间:

2.2.8()号

()号用于固定一组字符集,表示()内的字符串是一个整体,匹配时应按照整体进行匹配

 

2.2.9|或运算

或运算符是一个判断条件,只需要|运算符两边有一个满足条件就可以匹配,同时遵循编程语言中的“短路效应

 2.2.10转码特殊字符\

反斜线\在表达式中用于转码紧跟其后的字符,使后面的字符失去元字符的作用,成为一个待匹配的普通字符

(\s表示空格)

2.2.11^和$

^表示在字符串开头匹配,而&表示在字符串结尾匹配

 不使用^和$时:

使用^后:

使用$后:

可以看到“$”和“^”只返回匹配到的第一个结果

2.3简写字符集

正则表达式提供了一些简写的字符集,用来帮助我们简化书写

简写字符集描述
.除换行符以外的所有字符
\w匹配所有字母数字,等同于[a-zA-Z0-9]
\W匹配所有非字母数字,等同于[^a-zA-Z0-9]
\d匹配数字:[0-9]
\D匹配非数字:[^0-9]
\s匹配所有空格字符:[\t\n\f\r\p]
\S匹配所有非空格字符:[^\t\n\f\r\p]
\f匹配一个换页符
\n匹配一个换行符
\r匹配一个回车符
\t匹配一个制表符
\v匹配一个垂直制表符
\p匹配\r\n相当于dos终止符

 记忆方法:“小写的如s、d、w”表示所有,“大写的如S、D、W”表示所有非

“w” 即:“word”简写

“d”即:“digit”简写

“s”即:“space”简写

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

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

相关文章

社交媒体数据恢复:超级课程表

超级课程表是一款广受欢迎的应用程序&#xff0c;为学生提供便捷的课程查询和管理功能。然而&#xff0c;在使用过程中&#xff0c;数据丢失或误删的情况难免会发生。本文将介绍如何进行超级课程表的数据恢复&#xff0c;以确保用户的数据安全。 首先&#xff0c;我们需要了解…

Scrapy框架 进阶

Scrapy框架基础Scrapy框架进阶 【五】持久化存储 命令行&#xff1a;json、csv等管道&#xff1a;什么数据类型都可以 【1】命令行简单存储 &#xff08;1&#xff09;语法 Json格式 scrapy crawl 自定义爬虫程序文件名 -o 文件名.jsonCSV格式 scrapy crawl 自定义爬虫程…

更改android 安装的sdk版本

打开sdk manager 勾选show details 就可以选择了。

DrugBAN:基于双线性注意力网络进行药物-靶点结合预测。

DrugBan&#xff1a;一种可解释的双线性注意力网络进行药物-靶点结合预测。 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 DrugBan&#xff1a;一种可解释的双线性注意力网络进行药物-靶点结合预测。前言一、模型…

内网渗透-域环境的搭建

域环境的搭建 文章目录 域环境的搭建前言一、什么是域环境 什么是域内网基础知识点 二、域环境的搭建 1. 部署域结构2.如何加入域3.SRV出错及解决办法4.SRV记录注册不成功的可能原因 禁用域中的账户将计算机退出域添加域用户总结 前言 一、什么是域环境 什么是域 域是一种管…

NSL-KDD数据集详细介绍及下载

链接&#xff1a;https://pan.baidu.com/s/1hX4xpVPo70vwLIo0gdsM8A?pwdq88b 提取码&#xff1a;q88b 一般认为数据质量决定了机器学习性能的上限,而机器学习模型和算法的优化最多 只能逼近这个上限。因此在数据采集阶段需要对采集任务进行规划。在数据采集之前, 主要是从数据…

matplotlib_vs_ggplot2

参考博客 https://markusdumke.github.io/articles/2017/11/make-matplotlib-look-like-ggplot/#exactline theme_bw.mplstyle # ggplot style with white background # adapted from http://www.huyng.com/posts/sane-color-scheme-for-matplotlib/patch.linewidth: 1 patch…

mac基础操作、快捷、软件快捷方式

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 mac基础操作、快捷、软件快捷方式 前言mac快捷操作快捷查找切换页面页面缩略访达和命令端切换创建文件夹创建文件删除文件/文件夹获取文件的路径移动文件或文件夹复制文件命令端常用命令 前言 主要是方…

【爆款秘籍】上班族如何在小红书店铺实现10天净利润10万?

一、个人介绍与背景 自媒体起步 大家好&#xff0c;我是灵娜&#xff0c;一名热衷于知乎个人成长类内容创作的自媒体人。从最初的写作爱好者&#xff0c;到如今的自媒体从业者&#xff0c;我一直在探索如何通过内容创作实现自我价值。 面临的问题 然而&#xff0c;在自媒体…

Centos Docker Oracle11g 密码过期修改

症状&#xff1a; Centos Oracle11g环境变量配置 如果没有配置环境变量&#xff0c;需要先配置Oracle环境变量&#xff0c;否则执行sqlplus时会提示&#xff1a;SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory 配置方法&#xff1a; 第一步&a…

企业级OVSSL证书的五大优势

在数字化时代&#xff0c;企业级OVSSL&#xff08;Organization Validation Secure Sockets Layer&#xff09;证书已成为保护网站安全、提升用户信任度的重要工具。越来越多企业在自身网络安全方面更倾向于OVSSL证书&#xff0c;以下就带你了解企业级OVSSL证书的五大优势&…

QT文本操作

文本的操作 文本的读写流程 文本的读写流程 // 文本的读写流程// 1.打开文件》打到文本》QFileDialog::getOpenFileName返回的是// 一个字符串&#xff0c;包括了路径文件名字// open()方法打开文本// 2.读写文本// readAll(),readLine(),write()// 3.关闭文本 // close()使用…

3dmax制作小熊猫的基本流程

1.透视图插入面片&#xff0c;改高度宽度&#xff0c;把参考图放进面片里。 2.角度捕捉切换&#xff0c;角度改为90 3.shift旋转&#xff0c;旋转面片&#xff0c;复制一个出来 4.在前视图&#xff0c;把参考图片中的正式图小熊猫的一半的位置&#xff08;可以是眼睛&#x…

c++ - 类的默认成员函数

文章目录 前言一、构造函数二、析构函数三、拷贝构造函数四、重载赋值操作符五、取地址及const取地址操作符重载 前言 默认成员函数是编译器自动生成的&#xff0c;也可以自己重写&#xff0c;自己重写之后编译器就不再生成&#xff0c;下面是深入了解这些成员函数。 一、构造…

【面试八股总结】排序算法(一)

参考资料 &#xff1a;阿秀 一、冒泡排序 冒泡排序就是把小的元素往前交换或者把大的元素往后交换&#xff0c;比较相邻的两个元素&#xff0c;交换也发生在这两个元素之间。具体步骤&#xff1a; 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。对每一对…

HCIE考试第六题:规划设计

文章目录 业务个性化配置题目与做题步骤如下6规划设计6.1模板说明6.1.1规划设计图模板6.1.2.集成设计LLD模板6.2 华为云Stack规划设计画图【多Region组网】6.2.1.多Region说明和画图说明6.2.2.核心交换机画线6.2.3.TOR交换机画线6.2.4.防火墙画线6.2.5.业务区连线6.2.5.1.业务和…

MGRE-OSPF接口网络类型实验

OSPF接口网络类型实验 一&#xff0c;实验拓扑 初始拓扑&#xff1a; 最终拓扑&#xff1a; 二&#xff0c;实验要求及分析 要求&#xff1a; 1&#xff0c;R6为ISP只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2&#xff0c;R1/R4/R5为全连的MGRE结构&#xff0c;R…

二叉树的顺序存储结构

定义一个长度为MaxSize的数组t&#xff0c;按照从上至下、从左至右的顺序依次存储完全二叉树中的各个结点。 TreeNode t[MaxSize]; #define MaxSize 100 struct TreeNode {ElemType value; //结点中的数据元素bool isEmpty; //结点是否为空 };for (int i0; i<…

Oracle 数据库 count的优化-避免全表扫描

Oracle 数据库 count的优化-避免全表扫描 select count(*) from t1; 这句话比较简单&#xff0c;但很有玄机&#xff01;对这句话运行的理解&#xff0c;反映了你对数据库的理解深度&#xff01; 建立实验的大表他t1 SQL> conn scott/tiger 已连接。 SQL> drop table …

ubuntu22安装snipaste

Ubuntu 22.04 一、Snipaste 介绍和下载 Snipaste 官网下载链接: Snipaste Downloads 二、安装并使用 Snipaste # 1、进入Snipaste-2.8.9-Beta-x86_64.AppImage 目录&#xff08;根据自己下载目录&#xff09; cd /home/jack/Downloads/softwares/AppImage# 2、Snipaste-2.8.9-…