python正则匹配函数 python 正则匹配文件

一文秒懂python正则表达式常用函数01 Re概览
Re模块是pythonpython正则匹配函数的内置模块python正则匹配函数,提供python正则匹配函数了正则表达式在python中的所有用法,默认安装位置在python根目录下的Lib文件夹(如 ..\Python\Python37\Lib) 。主要提供了3大类字符串操作方法:
字符查找/匹配
字符替换
字符分割
由于是面向字符串类型的模块,就不得不提到字符串编码类型 。re模块中,模式串和搜索串既可以是 Unicode 字符串 (常用str类型),也可以是8位字节串 (bytes,2位16进制数字,例如\xe5) ,但要求二者必须是同类型字符串 。
02 字符串查找/匹配
预编译:compile
在介绍查找和匹配函数前,首先需要知道re的compile函数,该函数可以将一个模式串编译成正则表达式类型,以便后续快速匹配和复用
import repattern = re.compile(r'[a-z]{2,5}')type(pattern) #re.Pattern
此例创建了一个正则表达式式对象 (re.pattern) ,命名为pattern,用于匹配2-5位小写字母的模式串 。后续在使用其他正则表达式函数时 , 即可使用pattern进行方法调用 。
匹配:match
match函数用于从文本串的起始位置开始匹配,若匹配成功,则返回相应的匹配对象,此时可调用group()方法返回匹配结果,也可用span()方法返回匹配起止下标区间;否则返回None
import repattern = re.compile(r'[a-z]{2,5}')text1 = 'this is a re test'res = pattern.match(text1)print(res) #if res:print(res.group()) #thisprint(res.span()) #(0, 4)text2 = '是的, this is a re test'print(pattern.match(text2))#None
match函数还有一个变形函数fullmatch,当且仅当模式串与文本串刚好全部匹配时,返回一个匹配对象 , 否则返回None
搜索:search
match只提供了从文本串起始位置匹配的结果,如果想从任意位置匹配,则可调用search方法,与match方法类似,当任意位置匹配成功,则立即返回一个匹配对象,也可调用span()方法获取起止区间、调用group方法获得匹配文本串
import repattern = re.compile(r'\s[a-z]{2}')text1 = 'this is a re test'res = pattern.search(text1)print(res) #if res:print(res.group()) #isprint(res.span()) #(4, 7)pattern2 = re.compile(r'\s[a-z]{5}')text2 = '是的,this is a re test'print(pattern2.search(text2))#None
match和search均用于匹配单个结果,唯一区别在于前者是从起始位置开始匹配 , 而后者从任意位置匹配,匹配成功则返回一个match对象 。
全搜索:findall/finditer
几乎是最常用的正则表达式函数 , 用于寻找所有匹配的结果,例如在爬虫信息提取中,可非常方便地提取所有匹配字段
import repattern = re.compile(r'\s[a-z]{2,5}')text1 = 'this is a re test'res = pattern.findall(text1)print(res) #[' is', ' re', ' test']
findall返回的是一个列表对象类型,当无匹配对象时,返回一个空列表 。为了避免因同时返回大量匹配结果占用过多内存,可以调用finditer函数返回一个迭代器类型,其中每个迭代元素是一个match对象,可继续调用group和span方法获取相应结果
import repattern = re.compile(r'\s[a-z]{2,5}')text1 = 'this is a re test'res = pattern.finditer(text1)for r in res:print(r.group())"""isretest"""
当匹配模式串较为简单或者仅需单词调用时,上述所有方法也可直接调用re类函数,而无需事先编译 。此时各方法的第一个参数为模式串 。
import repattern = re.compile(r'\d{2,5}')text = 'this is re test're.findall('[a-z] ', text) #['this', 'is', 're', 'test']03 字符串替换/分割
替换:sub/subn
当需要对文本串进行条件替换时,可调用re.sub实现 (当然也可先编译后再用调用实例方法),相应参数分别为模式串、替换格式、文本串,还可以通过增加缺省参数限定替换次数和匹配模式 。通过在模式串进行分组,可实现字符串的格式化替换(类似字符串的format方法),以实现特定任务 。
import retext = 'today is 2020-03-05'print(re.sub('-', '', text)) #'today is 20200305'print(re.sub('-', '', text, 1)) #'today is 202003-05'print(re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', text)) #'today is 03/05/2020'
re.sub的一个变形方法是re.subn,区别是返回一个2元素的元组,其中第一个元素为替换结果 , 第二个为替换次数
import retext = 'today is 2020-03-05'print(re.subn('-', '', text)) #('today is 20200305', 2)
分割:split
还可以调用正则表达式实现字符串的特定分割 , 相当于.split()方法的一个加强版,实现特定模式的分割 , 返回一个切割后的结果列表
import retext = 'today is a re test, what do you mind?'print(re.split(',', text)) #['today is a re test', ' what do you mind?']04 总结
python中的re模块提供了正则表达式的常用方法,每种方法都包括类方法调用(如re.match)或模式串的实例调用(pattern.match)2种形式
常用的匹配函数:match/fullmatch
常用的搜索函数:search/findall/finditer
常用的替换函数:sub/subn
常用的切割函数:split
还有其他很多方法 , 但不是很常用,具体可参考官方文档
另外,python还有第三方正则表达式库regex可供选择
到此这篇关于一文秒懂python正则表达式常用函数的文章就介绍到这了,希望大家以后多多支持!
python中提供了哪几种通过正则表达式匹配字符串的方法有哪python中提供了3种通过正则表达式匹配字符串python正则匹配函数的方法 。种通过正则表达式匹配字符串的方法有以下三种 。
1、贪婪匹配与非贪婪匹配python正则匹配函数:在定义用于匹配的模式串时python正则匹配函数,使用.*,则为贪婪匹配 。使用.*,则为非贪婪匹配 。
2、indall与search的选取问题:自己定义的模式串只能匹配到一个结果,使用search方法结合group方法可以直接得到这个字符串 。自己定义的模式串能匹配到多个结果,则使用findall方法可以得到存储多个结果字符串的列表 。
3、匹配时"()"和[]的用法:目标字符串‘abcde’[…]会匹配在[]内的任意一个字符,而不会匹配整个字符串 。(…)会匹配在()内的整个字符串 。使用search方法时则正常匹配(相当于没有()) , 使用findall方法时则只会匹配(…)的内容 。)[]同时出现,考虑(…)式的字符串与[…]式内的字符和顺序,使用findall方法时结果会舍弃[…]内容,使用search方法时则正常匹配(相当于没有()和[]) 。
Python-正则表示式之re.match函数在日常开发当中,我们肯定会有遇到很多需要正则表达式处理的地方 。下面来分享一下我了解到的Python正则表达式知识 。
re.match的作用是尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话 , match()就返回 none 。具体的语法是:
re.match(pattern, string, flags=0)
参数说明:
1.pattern:匹配的正则表达式;
2.string:要匹配的字符串;
3.flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等 。
学Python正则表达式,这一篇就够了 正则表达式是一个特殊的字符序列,可以帮助您使用模式中保留的专门语法来匹配或查找其他字符串或字符串集 。正则表达式在UNIX世界中被广泛使用 。
注:很多开发人员觉得正则表达式比较难以理解,主要原因是缺少使用或不愿意在这上面花时间 。
re模块在Python中提供对Perl类正则表达式的完全支持 。如果在编译或使用正则表达式时发生错误 , 则re模块会引发异常re.error 。
在这篇文章中,将介绍两个重要的功能,用来处理正则表达式 。然而,首先是一件小事:有各种各样的字符,这些字符在正则表达式中使用时会有特殊的意义 。为了在处理正则表达式时避免混淆,我们将使用:r'expression'原始字符串 。
匹配单个字符的基本模式
编译标志可以修改正则表达式的某些方面 。标志在re模块中有两个名称:一个很长的名称,如IGNORECASE,和一个简短的单字母形式,如 。
1.match函数
此函数尝试将RE模式与可选标志的字符串进行匹配 。
下面是函数的语法 :
这里是参数的描述 :
pattern : 这是要匹配的正则表达式 。
string : 这是字符串 , 它将被搜索用于匹配字符串开头的模式 。|
flags : 可以使用按位OR(|)指定不同的标志 。这些是修饰符 , 如下表所列 。
re.match函数在成功时返回匹配对象,失败时返回None 。使用match(num)或groups()函数匹配对象来获取匹配的表达式 。
示例
当执行上述代码时,会产生以下结果 :
2.search函数
此函数尝试将RE模式与可选标志的字符串进行匹配 。
下面是这个函数的语法 :
这里是参数的描述 :
pattern : 这是要匹配的正则表达式 。
string : 这是字符串,它将被搜索用于匹配字符串开头的模式 。|
flags : 可以使用按位OR(|)指定不同的标志 。这些是修饰符,如下表所列 。
re.search函数在成功时返回匹配对象,否则返回None 。使用match对象的group(num)或groups()函数来获取匹配的表达式 。
示例
当执行上述代码时,会产生以下结果 :
3.匹配与搜索
Python提供基于正则表达式的两种不同的原始操作:match检查仅匹配字符串的开头,而search检查字符串中任何位置的匹配(这是Perl默认情况下的匹配) 。
示例
当执行上述代码时,会产生以下结果 :
4.搜索和替换
使用正则表达式re模块中的最重要的之一是sub 。
模块
此方法使用repl替换所有出现在RE模式的字符串,替换所有出现 , 除非提供max 。此方法返回修改的字符串 。
示例
当执行上述代码时,会产生以下结果 :
5.正则表达式修饰符:选项标志
正则表达式文字可能包含一个可选修饰符,用于控制匹配的各个方面 。修饰符被指定为可选标志 。可以使用异或(|)提供多个修饰符,如前所示,可以由以下之一表示 :
6.正则表达模式
除了控制字符(? . * ^ $ ( ) [ ] { } | ),所有字符都与其自身匹配 。可以通过使用反斜杠将其转换为控制字符 。
7.正则表达式示例
字符常量
字符类
特殊字符类
重复匹配
非贪婪重复
这匹配最小的重复次数 :
用圆括号分组
反向引用
这与以前匹配的组再次匹配 :
备择方案
python|perl : 匹配“python”或“perl”
rub(y|le) : 匹配 “ruby” 或 “ruble”
Python(! |?) : “Python”后跟一个或多个! 还是一个?
锚点
这需要指定匹配位置 。
带括号的特殊语法
开课吧广场-人才学习交流平台-开课吧
【python正则匹配函数 python 正则匹配文件】python正则匹配函数的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于python 正则匹配文件、python正则匹配函数的信息别忘了在本站进行查找喔 。

    推荐阅读