【Python】正则表达式语法入门

目录

正则表达式

1、点:匹配所有字符

2、星号:重复匹配任意次

3、加号:重复匹配多次

4、花括号:匹配指定次数

5、贪婪模式和非贪婪模式

6、反斜杠:对元字符的转义

7、方括号:匹配几个字符之一

8、开始、结尾位置和单行、多行模式

9、圆括号:组选择


正则表达式

应用场景:文本处理提取信息

关键在于:如何正确地使用正则表达式的语法

验证网站:https://regex101.com/

字符分类:

  • 普通字符:没有特殊含义,直接用来匹配
  • 特殊字符:又称元字符,有特殊含义,不是直接用来匹配

1、点:匹配所有字符

“.”:表示要匹配除了 换行符 以外的 任何单个字符。

content = '''ive是芙
izone不是芙'''import re
# r禁止了对字符的转义
p = re.compile(r'.芙')
# findall查找符合匹配条件的文本
for one in p.findall(content):# <class 'str'>print(type(one))print(one)

查看调用 compile 后 p 的类型:

# <class 're.Pattern'>
# 从而才能调用该类中的各种方法
print(type(p))

2、星号:重复匹配任意次

点默认只匹配一个字符,而搭配使用星号等可以在此基础上匹配多个字符。

“*”:表示可以匹配 任意次数,包括 0 次。

  • “*” 搭配 “.” 来使用即 “.*”,表示要匹配指定字符前或后的所有字符,包括该指定字符。
  • 比如:“,.*” 表示匹配中文逗号后的任何字符任意次数。

3、加号:重复匹配多次

“+”:表示可以匹配 任意次数,但不包括 0 次。

  • 与 “*” 的区别就是一个包含 0 次而另一个不包含

4、花括号:匹配指定次数

“{}”:表示匹配 位于 “{}” 前面 的一个字符 指定次数。

  • c{min, max}:c 是匹配的字符,min 是最少出现次数,max 是最多出现次数
  • c{num}:直接指定需要匹配 num 次

匹配电话号码:\d{11},\d 表示数字。

5、贪婪模式和非贪婪模式

“*”、“+”、“?” 都是 贪婪 的,它们会尽可能多地去匹配内容。

<html><head><title>Title</title></head></html>

加上 “?” 变为 非贪婪 模式:

分别匹配到了多个对象:

6、反斜杠:对元字符的转义

“\” 将元字符转义为普通字符。

“\” 后面接一些字符,还能表示匹配 某种类型 的一个字符。

  • \d:匹配 0-9 之间任意一个数字字符,等价于表达式 [0-9]
  • \D:匹配任意一个不是 0-9 之间的数字字符,等价于表达式 [^0-9]
  • \s:匹配任意一个空白字符,包括 空格、tab、换行符 等,等价于表达式 [\t\n\r\f\v]
  • \S:匹配任意一个非空白字符,等价于表达式 [^\t\n\r\f\v]
  • \w:匹配任意一个文字字符,包括大小写字母、数字、下划线,等价于表达式 [a-zA-Z0-9]
  • \W:匹配任意一个非文字字符,等价于表达式 [^a-zA-Z0-9]

\w 缺省情况也包括 Unicode 文字字符,如果指定 ASCII 码标记,则只包括 ASCII 字母。

  • re.compile(r'.芙', re.A)

7、方括号:匹配几个字符之一

  • 1[35]\d{9}:表示几个字符
  • 1[3-5]\d{9}:“-” 表示一个范围

更进一步:

  • “.” 在 “[]” 里面变为普通字符,不再是元字符
  • “^” 在“[]” 里面表示 “非” 的概念

8、开始、结尾位置和单行、多行模式

“^” 表示只需要处于 每行开始位置 的匹配内容。

  • 单行模式下和多行模式下的匹配结果不一样
  • 多行模式:re.compile(r'.芙', re.M)

“$” 表示只需要处于 每行结尾位置 的匹配内容。


 

9、圆括号:组选择

组就是把正则表达式匹配的内容里面其中的某些部分标记为某个组。

我们可以在正则表达式中标记多个组。

匹配结果为多个组:

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

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

相关文章

异地使用PLSQL远程连接访问Oracle数据库【内网穿透】

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 转载自cpolar极点云文章&#xff1a;公网远程连接…

cjson的内存泄漏案例

1、当我们使用下面这些创建json对象时&#xff0c;需要用cJSON_Delete();释放&#xff0c;&#xff08;当然&#xff0c;释放父JSON对象后&#xff0c;子JSON对象也会被释放&#xff09; 2、多次释放同一内存空间 在recv_write_property函数中的data&#xff0c;在Equipment_re…

Html基础知识学习——兼容问题与解决方法(十六)

文章目录 1.计算一定要精确&#xff0c;不要让内容的宽高超出我们设置的宽高&#xff0c;在IE6下内容会撑开设置好的宽高2.元素浮动&#xff0c;宽度需要内容撑开&#xff0c;就给里面的块元素都加浮动3.在ie6.ie7下元素要浮动并在同一行 就给这些元素都加浮动4.注意标签嵌套规…

【玩转Linux操作】Linux进程(进程基本介绍,父子进程,终止进程,进程树)

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;进程的基本介绍&#x1f354;显示系统执行的进程⭐…

微服务 云原生:K8S 核心组件

参考 Kubernetes 官方文档&#xff0c;简要概述 Kubernetes 中的核心组件用途及部分原理。 一个 K8S 集群&#xff0c;可以分为两个部分&#xff1a; 控制平面(Control Plane)。它是一套管理系统&#xff0c;专门来管理集群节点和服务&#xff0c;为集群做出全局决策&#xff…

使用 @Autowired 为什么会被 IDEA 警告,应该怎么修改最佳?

# 问题原因 关于这个问题&#xff0c;其实答案相对统一&#xff0c;实际上用大白话说起来也容易理解。 1.初始化问题 先看一下Java初始化类的顺序&#xff1a;父类的静态字段 > 父类静态代码块 > 子类静态字段 > 子类静态代码块 > 父类成员变量 > 父类构造代码块…

Linux系统使用(超详细)

目录 Linux操作系统简介 Linux和windows区别 Linux常见命令 Linux目录结构 Linux命令提示符 常用命令 ls cd pwd touch cat echo mkdir rm cp mv vim vim的基本使用 grep netstat Linux面试题 Linux操作系统简介 Linux操作系统是和windows操作系统是并列…

数组与指针

博客内容&#xff1a;数组与指针 文章目录 一、 数组&#xff1f;指针&#xff1f;1.区别与联系大小赋值存储位置 二、指针数组、数组指针&#xff1f;二维数组和二级指针&数组名与数组的区别总结 一、 数组&#xff1f;指针&#xff1f; 数组 相同类型数据的集合 指针 指…

使用SpringBoot+React搭建一个Excel报表平台

摘要&#xff1a;本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 Excel报表平台是一款功能强大、操作简单的系统平台&#xff0c;可以帮助用户上传…

【C++/嵌入式笔试面试八股】二、24.TCP三次握手四次挥手 | TCP可靠性

TCP三次握手四次挥手 64.TCP头部中有哪些信息?❤️ TCP数据报格式(左图) UDP数据报格式也放这(右图),不具体解释了。 结合三次握手四次挥手来看 端口: 区分应用层的不同应用进程 扩展:应用程序的端口号和应用程序所在主机的 IP 地址统称为 socket(套接字),IP:端口…

如何在 Windows 中免费合并 PDF 文件 [在线和离线]

PDF是一种广泛使用的文件格式&#xff0c;具有兼容性好、安全性高、易于打印、方便浏览等众多优点。在工作和学习过程中&#xff0c;经常需要将同一类型的PDF文件合并起来&#xff0c;以方便传输和查看&#xff0c;使得合并PDF文件成为一种重要的数据整合方法。 如果您想知道如…

1、Kubernetes 概述和架构

目录 一、基本介绍 二、kubernetes功能和架构 2.1、 概述 2.2 、功能 &#xff08;1&#xff09;自动装箱 &#xff08;2&#xff09;自我修复(自愈能力) &#xff08;3&#xff09;水平扩展 &#xff08;4&#xff09;服务发现 &#xff08;5&#xff09;滚动更新 &a…

Linux进程理解【环境变量】

Linux进程理解【环境变量】 提到环境变量&#xff0c;大家可能有些陌生&#xff0c;如果编写过Java就知道&#xff0c;编写Java需要提前安装JDK&#xff0c;这个操作就是配置Java的编码环境&#xff0c;在Linux中当然也少不了环境变量&#xff0c;下面我们就一起来看看 文章目…

Node.js 版本管理工具 n 使用指南

Node.js 版本更新很快&#xff0c;目前 node v20.x 已经发布&#xff0c;我们在使用时避免不了会需要切换不同的 Node.js 的版本来使用不同版本的特性。 所以就出现了像 windows 上的 nvm&#xff0c;MacOS 上的 n 工具&#xff0c;本文就介绍一下如何使用 n 管理 Node.js 的版…

Django_haystack全文搜索

haystack是全文搜索的框架&#xff0c;支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎&#xff0c;点击查看官方网站。 whoosh是用纯Python编写的全文搜索引擎&#xff0c;虽然性能比不上sphinx、xapian、Elasticsearc等&#xff0c;但是无二进制包&#xff0c;程序…

LiveNVR监控流媒体Onvif/RTSP功能-安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口

LiveNVR安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口&#xff1f; 1、安全控制1.1、接口鉴权1.2、禁止游客访问 2、401 Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.2.1、携带 CookieToken2.1.2.2、携带 U…

使用Feign进行微服务之间的接口调用:Spring Cloud Alibaba中的声明式服务调用

一、Feign介绍 Feign是一个声明式的HTTP客户端框架&#xff0c;用于简化微服务架构中服务之间的通信。它是Spring Cloud框架的一部分&#xff0c;旨在提供一种优雅且易于使用的方式来定义和调用HTTP请求。 Feign的设计目标是让服务之间的通信变得更加简单和直观。通常情况下&am…

opencv 基础学习08-图像通道操作

opencv 基础学习08-图像通道操作 什么是图像通道&#xff1f;通道操作&#xff1a;**1 通过索引拆分**2 通过opencv 函数拆分通道合并 什么是图像通道&#xff1f; OpenCV的通道拆分功能可用于将多通道图像拆分成单独的通道&#xff0c;这在图像处理和计算机视觉任务中具有许多…

你的隐私被泄漏了吗

近日&#xff0c;某高校毕业生在校期间窃取学校内网数据&#xff0c;收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代&#xff0c;算法分发带来了隐私侵犯&#xff0c;在享受消费生活等便捷权利的同时&#xff0c;似乎又有不…

【Vue3】setup参数细讲!computed计算属性和watch监听属性

setup参数细讲&#xff01;computed计算属性和watch监听属性 setup细讲!setup参数&#xff0c;steup&#xff08;props&#xff0c;context&#xff09;参数1.props&#xff0c;负责接收父组件传过来的值参数2.contextcontext.attrscontext.emitcontext.slots&#xff0c; 插槽…