Python正则表达式模块re
正则表达式是一种通用的字符串匹配模式,使用灵活功能强大.
一、Python正则表达式常见语法
二、常用的re函数:
1.re.match(pattern, string, flags=0) 从字符串的起始位置匹配,如果起始位置匹配不成功的话,match()就返回none
参数:pattern: 描述匹配模式的正则字符串;string: 要匹配的文本;flag: 控制匹配模式的标志位.
判断string是否符合pattern, 返回match对象包含匹配的部分:
>>> import re
>>> text = 'This is Finley, welcome to join us.'
>>> m = re.match(r'\w*is\w*', text)
>>> m.group(0)
'This'
2.re.compile(pattern,flags=0)->regex #将正则表达式模式编译成正则表达式对象。
pattern #需要编译的正则表达式;flags #正则表达式使用的模式。re.S|re.M 开启多行模式和单行模式
常用模式有:re.I,re.M,re.S,re.X 为了提高效率,正则表达式可以被编译,这些编译后的结果被保存,下次使用同样的pattern的时候,就不需要再次编译。 编译后的对象同样可以使用match(),search()方法进行匹配。
单次匹配
- re.match(pattern,string,flags=0)->match #匹配从字符串的开头匹配,返回match对象
- regex.match(string[,pos[,endpos]])->match #regex对象match方法可以重设定开始位置和结束位置。返回match对象
- pattern #正则表达式
- string #需要匹配的字符串
- flags #正则表达式使用的模式
- 常用模式有:re.I,re.M,re.S,re.X
- pos #匹配字符串的开始位置,默认从0索引位置开始匹配
- endpos #匹配字符串的结束位置(不包含结束位置),默认值为len(string)
示例:
import re
str1 = """123
456"""
print(re.match("^\d*",str1,re.M))
print(re.match("^\d*",str1))
print(re.match("^[\d\n]*",str1,re.M))
regex = re.compile("^\d*")
print(regex.match(str1))
#注意regex可以重新指定字符串的开始位置,和结束位置(不包含结束位置)
print(regex.match(str1,0,2))
#注意:regex中开始位置和结束位置对^和$符号无影响,依然是指原字符串的开头和结尾
print(regex.match(str1,3)) #返回值为None,因为截开始的位置不是字符串的开头。所以无法匹配
3. re.search(pattern, string, flags=0) 扫描整个字符串并返回第一个成功的匹配
re.search寻找字符串内从任意位置开始的匹配, 而re.match只寻找从字符串的头部开始的匹配.
修改上例的可以发现两者的区别:
>>>text = 'Here is Finley, welcome to join us.'
>>> m = re.match(r'\w*is\w*', text)
>>> m is None
True
>>> m = re.search(r'\w*is\w*', text)
>>> m.group(0)
'is'
4.re.findall(pattern, string, flags=0) 找到RE匹配的所有字符串,并把他们作为一个列表返回
- re.findall(pattern,string,flags=0)->list #对整个字符串从左至右匹配,返回所有匹配项的列表
- regex.findall(string[,pos[,endpos]])->list #对整个字符串从左至右匹配,返回所有匹配项的列表
- pattern #正则表达式
- tring #需要匹配的字符
- flags #模式
- pos #匹配的起始位置
- endpos #匹配的结束位置(不包含结束位置)
以列表的形式返回所有匹配的子串:
>>> import re
>>> text = 'This is Finley, welcome to join us.'
>>> m = re.findall(r'\w*is\w*', text)
>>> m
['This', 'is']
5.re.sub(pattern, repl, string, count=0, flags=0) 替换匹配到的字符串
将匹配的子串替换为repl字符串,;count参数指定替换个数, 默认为0表示全部替换.
import re
str1 = "a23asldkf234xdd"
print(re.sub("\d","你",str1))
print(re.subn("\d","你",str1))
print(re.sub("\d","你",str1,2))
req = re.compile("\d")
print(req.sub("爱",str1,3))
print(req.subn("爱",str1))
6.re.split分割
- re.split(pattern,string,maxsplit=0,flags=0)->list
- regex.split(string,maxsplit=0)->list
import re
str1 = "a1dslkd3ksdk245ks5jdf"
print(re.split("\d",str1))
print(re.split("\d",str1,2))
print("----------")
rep = re.compile("\d")
print(rep.split(str1))
print(rep.split(str1,1))
print("---------------")
print(re.split("k(s)",str1))
三、python中re模块提供了正则表达式相关操作
字符:
. 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束
次数:
* 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次
相关文章
- pycharm配置python运行环境_C中调用Python
- python编程是什么-Python编程
- Python 常用模块
- 【说站】python使用切片的三条规则
- 【说站】python正则表达式中量词的分类
- 【说站】python序列解包的使用
- 【说站】python正则表达式如何匹配内容
- 【说站】python正则表达式查找和替换内容
- 经纬度距离计算 python_Python已知两坐标求距离
- 【Python技能】如丝滑般控制键盘鼠标
- Python绘制旭日图_python绘制散点图
- 【测试开发】python系列教程:函数(二)
- Python 自动化指南(繁琐工作自动化)第二版:七、使用正则表达式的模式匹配
- 网络工程师学Python-1.3-安装集成开发环境PyCharm
- Python版本区别,Python 3和Python 2区别详解
- 小白的Python之路 day5 python模块详解及import本质编程语言
- Python正则表达式详解
- Linux升级:升级Python到最新版本(linux升级python版本)
- Python驱动Oracle数据库(python操作oracle)
- 使用Python连接SQL Server数据库(python连接sqlserver)
- Linux系统下安装Python模块指南(linux安装python模块)
- Python模块学习re正则表达式
- python判断字符串是否纯数字的方法