python之正则表达式【简化版】

news2024/9/22 11:25:18

大家好,我们今天说一说正则表达式,在之前我们也介绍了关于正则表达式,今天,我们来深入的了解一下。我们知道正则表达式是处理字符串的强大工具,它有自己的语法结构,什么匹配啊,都不算什么。

正则表达式是什么?

正则表达式,又称规则表达式,(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),它是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。例如在 Perl 中内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由 Unix 中的工具软件普及开的。正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。

1.实例引入

说了一大堆废话,大家可能还是云里雾里的,我们通过实例来说明一下,我们可以用正则表达式测试工具,或者python都可以,首先,我们输入一段文本。

hello,my name is Tina,my phone number is 123456 and my web is http://tina.com.

 我们接下来尝试用正则表达式提取出来;

                               [a-zA-z]+://[^\s]*

我们就可以获取网页链接,也就是文本中的url,是不是很神奇?

这是因为它有自己的匹配规则,部分如下。

模式描述
.任意字符
*0个或者多个表达式
+一个或者多个表达式

 关于更多的匹配规则可自行查阅。

?,*,+,\d,\w 都是等价字符

?等价于匹配长度{0,1}

*等价于匹配长度{0,}

+等价于匹配长度{1,}

\d 等价于[0-9]

\D 等价于[^0-9]

\w 等价于[A-Za-z_0-9]

\W 等价于[^A-Za-z_0-9]

2.match()

这里介绍一个常用的匹配方法——match(),向他传入要匹配的字符串以及正则表达式,就可以检测这个正则表达式是否匹配字符串。

匹配目标

res = re.match('hello\s(\d+)sword')

贪婪匹配

res = re.match('hello.*(\d+)sword')

3.findall()

我们最常用的就是这个,我们看看这个是如何使用的。

import re

useData = str(input('请输入字符串数据:'))

'''
匹配字符串中的数字,+是匹配前面的子表达式一次或多次
'''
digital = re.findall('\d+',useData)

print(digital)

我们看看运行结果

findall()函数是返回所有匹配到的字符串,返回值的数据类型为列表。

我们今天就介绍到这里。 

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

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

相关文章

JavaIO流:BIO梳理

BIO(blocking I/O) : 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机…

Java8新特性 Stream流

Stream流 在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。 传统集合的多步遍历代码几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍…

我这样写代码,比直接使用 MyBatis 效率提高了 100 倍

对一个 Java 后端程序员来说,mybatis、hibernate、data-jdbc 等都是我们常用的 ORM 框架。它们有时候很好用,比如简单的 CRUD,事务的支持都非常棒。但有时候用起来也非常繁琐,比如接下来我们要聊到的一个常见的开发需求&#xff0…

【知识图谱论文】调整元知识图信息以在少样本关系上进行多跳推理

文章题目:Adapting Meta Knowledge Graph Information for Multi-Hop Reasoning over Few-Shot Relations时间:2019 摘要 多跳知识图 (KG) 推理是一种有效且可解释的方法,用于在查询回答 (QA) 任务中通过推理路径预测目标实体。 大多数以前…

做交互设计都有哪些需要掌握的思维方式

由于目前的环境对这个细分领域仍然缺乏了解,我希望在这篇文章中写一些交互设计所需的思维方式。 ​ 1.可用性优先,视觉靠边 一个功能个功能应该能够使用和使用,以便有人关心它是否好看。审美挑剔的用户实际上比你想象的要少得多。当然&#…

机械工程基础知识点汇总

第一章 常用机构 一、零件、构件、部件 零件,是指机器中每一个最基本的制造单元体。 在机器中,由一个或几个零件所构成的运动单元体,称为构件。 部件,指机器中由若干零件所组成的装配单元体。 二、机器、机构、机械 机器具有以下特…

智能捡乒乓球机器人

本文素材来源于物理与电子电气工程学院 作者:丁文龙 、王小军、任剑杰、张钊铭 指导老师:康彩 一、项目简介 随着人们对机器人技术智能化本质认识的加深,机器人技术开始源源不断地向人类活动的各个领域渗透。在这其中,服务机器人…

数字图像处理(十二)最大熵算法

文章目录前言一、熵是什么?1.信息量如何计算?2.熵如何计算?二、最大熵方法1.设计思想2.算法步骤3.C代码4.实验结果参考资料前言 在图像分析中,通常需要将所关心的目标从图像中提取出来,这种从图像中某个特定区域与其他…

JAVA中的集合类型的理解及应用

目录 概述 List和Queue Map和Set HashTable和HashMap的区别 Queue和Deque BlockingQueue 并发集合 概述 写程序免不了处理一些批量数据,不同数据结构和算法,会带来不同的性能效果。大学的计算机课程中就有一门叫《数据结构》的课程,这门…

总结我的 MySQL 学习历程,给有需要的人看

作者| 慕课网精英讲师 马听 你好,我是马听,现在是某零售公司的 MySQL DBA,身处一线的我表示有很多话要讲。 我的MySQL学习历程 在我大三的时候,就开始接触到 MySQL 了,当时我也是从最基础的 MySQL 知识(…

6、项目第六阶段——用户名登录显示和注册验证码

第六阶段——用户名登录显示和注册验证码 1、登陆—显示用户名 UserServlet 程序中保存用户登录的信息 UserServlet程序中: //保存用户登录信息到Session域中 req.getSession().setAttribute("user",loginUser);修改 login_succuess_menu.jsp&#xf…

2019 国际大学生程序设计竞赛(ICPC)亚洲区域赛(银川) 7题

文章目录N.Fibonacci SequenceB.So EasyI.Base62G.Pot!!F.Function!K.Largest Common Submatrix补题链接:https://codeforces.com/gym/104021 难得VP打出这么好的成绩,虽然是有争议的西部枢纽银川站,虽然没能早生几年。。。。 N.Fibonacci Se…

【数据结构】基础:堆

【数据结构】基础:堆 摘要:本文主要介绍数据结构堆,分别介绍其概念、实现和应用。 文章目录【数据结构】基础:堆一、概述1.1 概念1.2 性质二、实现2.1 定义2.2 初始化与销毁2.3 入堆2.4 出堆2.5 堆的创建2.6 其他三、应用3.1 堆排…

《前端》css总结(下)

文章目录元素展示格式displaywhite-spacetext-overflowoverflow内边距和外边距marginpadding盒子模型box-sizing位置position:用于指定一个元素在文档中的定位方式浮动flex布局flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-contentorderflex-g…

你最少用几行代码实现深拷贝?

问题分析 深拷贝 自然是 相对 浅拷贝 而言的。 我们都知道 引用数据类型 变量存储的是数据的引用,就是一个指向内存空间的指针, 所以如果我们像赋值简单数据类型那样的方式赋值的话,其实只能复制一个指针引用,并没有实现真正的数…

计算机组成原理4小时速成:存储器,内存ROM,RAM,Cache,高速缓存cache,外存,缓存命中率,效率

计算机组成原理4小时速成:存储器,内存ROM,RAM,Cache,高速缓存cache,外存,缓存命中率,效率 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法…

MYSQL事务原理分析

目录事务是什么ACID特性原子性(A)隔离性(I)持久性(D)一致性(C)隔离级别简介有些什么READ UNCOMMITTED(读未提交)READ COMMITTED(读已提交&#xf…

【17】Java常见的面试题汇总(设计模式)

目录 1. 说一下你熟悉的设计模式? 2. 简单工厂和抽象工厂有什么区别? 1. 说一下你熟悉的设计模式? 单例模式:保证被创建一次,节省系统开销。 工厂模式(简单工厂、抽象工厂):解耦…

力扣(LeetCode)60. 排列序列(C++)

枚举 枚举每一位可能的数字。 如图。算法流程如上图。 思路分析 : 一个数 nnn ,可以组成的排列数量有 n!n!n! 。当首位确定,剩余位能组成的排列数量 (n−1)!(n-1)!(n−1)! ,依次类推 (n−2)!/(n−3)!/(n−4)!/…/2!/1!/0!(n-2)!/(n-3)!/(n…

CentOS7安装MYSQL8.X的教程详解

1-首先查看系统是否存在mysql,无则不返回 1 # rpm -qa|grep mysql 2-安装wget 1 # yum -y install wget 3-抓取mariadb并删除包,无则不返回 1 # rpm -qa|grep mariadb 4-删除mariadb-libs-5.5.68-1.el7.x86_64 1 # rpm -e --nodeps mariadb-libs-…