首页 > 编程语言 >python—正则表达式

python—正则表达式

时间:2024-07-18 20:54:20浏览次数:17  
标签:Python 匹配 re python 正则表达式 print match

文章目录


Python中的正则表达式是一种强大的文本处理工具,它使用一种特殊的语法来描述字符串的模式。Python通过re模块提供了对正则表达式的支持。使用正则表达式,你可以进行复杂的文本搜索、替换和验证等操作。
所以判断一个字符串是否是合法的Email的方法是:

  • 创建一个匹配Email的正则表达式
  • 用该正则表达式去匹配用户的输入来判断是否合法

导入re模块

在使用正则表达式之前,你需要先导入Python的re模块。

import re

常用的元字符

Python中常见的元字符有:
在这里插入图片描述
要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n~m个字符。
A|B可以匹配A或B,所以(P|p)ython可以匹配’Python’或者’python’。

re模块

Python提供re模块,包含所有正则表达式的功能。由于Python的字符串本身也用\转义,所以要特别注意:
s = ‘ABC\001’ ,s类型为str,即Python最基本的字符串
由于’‘会对’'进行转义,故对应的正则表达式字符串变成:‘ABC\001’
实例:

print("ABC\\001")
#输出结果:ABC\001

如果使用r标记字符串,那么就不再需要考虑转义的问题了:
s = r’ABC\001’
对应的正则表达式字符串不变:‘ABC\001’
实例:

print(re.match(r"\w+\\\d+","ABC\\001"))
#输出结果:<re.Match object; span=(0, 7), match='ABC\\001'>

推荐在Python中进行正则表达式匹配时,使用r前缀标记字符串

match方法

re模块提供了一个match方法,可以判断正则表达式是否匹配
match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None

    phone_num = "0551-123456789"
    print(re.match(r"\d{4}-\d{3,8}",phone_num))
#输出结果:<re.Match object; span=(0, 13), match='0551-12345678'>

match方法通常会结合if选择结构进行判断:
在这里插入图片描述

分组

除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group),比如:

t = "19:59:59"
print(re.match(r"([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)",t).groups())
print(re.match(r"([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)",t).group(1))
print(re.match(r"([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)",t).group(2))
print(re.match(r"([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)",t).group(3))
#输出结果:('19', '59', '59')
#19
#59
#59

如果正则表达式中定义了组,就可以在Match对象上用group()方法提取出子串来。
注意:group(0)永远是与整个正则表达式相匹配的字符串,group(1)、group(2)…表示第1、2、……个子串。

贪婪匹配

正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符
例如,匹配出数字后面的0:

num = "1101230000000"
print(re.match(r"^(\d+?)(0+)$",num).groups())
#输出结果:('110123', '0000000')

?结束贪婪匹配,^ 表示行的开头,^\d表示必须以数字开头,$ 表示行的结束,\d$表示必须以数字结束。

编译

当在Python中使用正则表达式时,re模块内部会干两件事情:

  • 编译正则表达式,如果正则表达式的字符串本身不合法,会报错
  • 用编译后的正则表达式去匹配字符串
    如果一个正则表达式要重复使用几千次,出于效率的考虑,可以使用compile方法预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配。
    实例:
num1 = "1201230000000"
num2 = "1101200000000"
num3 = "1201100000000"
re_comp = re.compile(r"^(\d+?)(0+)$")
print(re_comp.match(num1))
print(re_comp.match(num2))
print(re_comp.match(num3))
#输出结果:
#<re.Match object; span=(0, 13), match='1201230000000'>
#<re.Match object; span=(0, 13), match='1101200000000'>
#<re.Match object; span=(0, 13), match='1201100000000'>

标签:Python,匹配,re,python,正则表达式,print,match
From: https://blog.csdn.net/2301_77698138/article/details/140531501

相关文章

  • python的异常处理
    文章目录语法错误(SyntaxError)六种典型的异常捕获异常抛出异常用户自定义异常Python的异常处理机制允许你在程序运行时捕获和处理错误。这对于提高程序的健壮性和用户体验至关重要。Python使用try和except语句来捕获和处理异常。你还可以使用else和finally子......
  • python中的接口(通过相关的模块实现)
    在Python中,接口通常通过抽象基类(AbstractBaseClasses,简称ABCs)来实现。抽象基类提供了一个机制,用于定义一组方法和属性,这些方法和属性必须在子类中实现。Python提供了abc模块来定义抽象基类。抽象基类(ABCs)定义抽象基类要定义一个抽象基类,需要从abc.ABC继承,并使用a......
  • 在Python中doc转docx,xls转xlsx,ppt转pptx(Windows)
    在Python中doc转docx,xls转xlsx,ppt转pptx(Windows)说明:首次发表日期:2024-07-18参考pypi包:doc2docx缘起我们一般使用Python开发RAG应用,或者使用基于Python开发的开源RAG工具,比如Dify。然而由于Python中对.doc和.ppt格式的文件支持不够好,通常我们需要将文件格式转换为.docx和.p......
  • python中的迭代器
    在Python中,迭代器是一种对象,它实现了迭代协议,即包含方法__iter__()和__next__()。迭代器允许你遍历一个容器(如列表、元组等)中的所有元素,而无需显式地使用索引。理解迭代器的概念和使用可以帮助你编写更高效、可读性更强的代码。迭代器的基本概念迭代器对象:实现了__iter__......
  • 【Azure Function】发布 Python Function 到 Azure 成功,但是无法显示Function列表
    问题描述发布PythonFunction到AzureFunctionApp服务,发布成功后,在Overview页面却无法查看到这个Function,进入Kudu站点,查看FunctionLog,发现错误信息为:"module not found" error:"FailureException:ImportError:libpq.so.5:cannotopensharedobjectfile:Nosuchf......
  • 十天学会Python——第8天:Linux基础
    1Linux基础1.1认识LinuxLinux目录:1Linux系统只有一个根目录/,所有原文件都在它下面2Linux主要目录/:根目录/bin:可执行的二进制文件的目录/etc:系统配置文件存放的目录/home:用户家目录1.2Linux基础命令1.2.1查看目录命令命令说明ls查看当前路径的目录信......
  • XGBoost模型构建+SHAP解析-Python代码——用XGBoost模型实现机器学习并进行黑箱过程解
    一、XGBoost模型简介1.1适用范围XGBoost(ExtremeGradientBoosting)是一个基于梯度提升(GradientBoosting)框架的增强算法,广泛应用于分类、回归、排序等任务。常见的应用包括:信用风险评估销售预测病毒检测图像识别1.2原理XGBoost是梯度提升树(GradientBoostedDecisionTree......
  • 十天学会python——第7天:异常与模块
    1异常1.1认识异常异常语法:try:可能发生错误的代码except:如果出现异常执行的代码try:f=open('test.txt','r')except:f=open('test.txt','w')捕获异常:try:可能发生错误的代码except异常类型:如果捕获到异常执行的代码try:......
  • 决策树模型构建+调参Python代码——用决策树模型实现机器学习
    一、决策树模型简介1.1适用范围决策树模型(DecisionTree)可以用于分类和回归任务,广泛应用于以下领域:客户细分信用风险评估医疗诊断营销策略优化1.2原理决策树是一种树形结构的预测模型,通过一系列的特征测试(即节点的分裂)将数据集逐步划分,从而形成一个树状的决策路径。每个节......
  • Python学习之推导式
    目录一、列表推导式二、集合推导式三、字典推导式四、元组推导式一、列表推导式[expressionforiteminiterableifcondition]介绍:(1)expression:生成元素的表达式。(2)item:可迭代对象中的每个元素。(3)iterable:可迭代对象,如列表、元组、字符串等。(4)condition(可选):筛选......