Python基础(9)--正则表达式
2023-09-14 08:58:00 时间
据上所述,".*"为最大匹配,能匹配源字符串所有能匹配的字符串。".* "为最小匹配,只匹配第一次出现的字符串。如:d.*g能匹配任意以d开头,以g结尾的字符串,如"debug"和"debugging",甚至"dog is walking"。而d.* g只能匹配"debug",在"dog is walking"字符串中,则只匹配到"dog "。
在一些更复杂的匹配中,我们可用到组和运算符。
组和运算符
有一组特殊的字符序列,用来匹配具体的字符类型或字符环境。如\b匹配字符边界,food\b匹配"food"、"zoofood",而和"foodies"不匹配。
特殊字符序列
( =...) 如果所提供的文本与下一个正则表达式元素匹配,这之间没有多余的文本就匹配。这允许在一个表达式中进行超前操作,而不影响正则表达式其余部分的分析。如"Martin"其后紧跟"Brown",则"Martin( =Brown)"就只与"Martin"匹配。
( =...) 如果字符串当前位置的前缀字符串是给定文本,就匹配,整个表达式就在当前位置终止。如( =abc)def表达式与"abcdef"匹配。这种匹配是对前缀字符数量的精确匹配。
通过re模块,我们就可在python中利用正则式对字符串进行搜索、抽取和替换操作。如:re.search()函数能执行一个基本的搜索操作,它能返回一个MatchObject对象。re.findall()函数能返回匹配列表。
import re a="this is my re module test" obj = re.search(r.*is,a) print obj _sre.SRE_Match object at 0xb7d7a218 obj.group() this is re.findall(r.*is,a) [this is]
MatchObject对象方法
m.group([group,...]) 返回匹配的文本,是个元组。此文本是与给定group或由其索引数字定义的组匹配的文本,如果没有组定组名,则返回所有匹配项。
m.groups([default]) 返回一个元组,该元组包含模式中与所有组匹配的文本。如果给出default参数,default参数值就是与给定表达式不匹配的组的返回值。default参数的默认取值为None。
m.groupdict([default]) 返回一个字典,该字典包含匹配的所有子组。如果给出default参数,其值就是那些不匹配组的返回值。default参数的默认取值为None。
m.span([group]) 返回两元素组,此元组等价于关于一给定组或一个完整匹配表达式的(m.start(group),m.end(group)))列表
使用sub()或subn()函数可在字符串上执行替换操作。sub()函数的基本格式如下:
sub(pattern,replace,string[,count])
示例
str = The dog on my bed rep = re.sub(dog,cat,str) print rep The cat on my bed
replace参数可接受函数。要获得替换的次数,可使用subn()函数。subn()函数返回一个元组,此元组包含替换了的文本和替换的次数。
如果需用同一个正则式进行多次匹配操作,我们可把正则式编译成内部语言,提高处理速度。编译正则式用compile()函数来实现。compile()函数的基本格式如下:
compile(str[,flags])
str表示需编译的正则式串,flags是修饰标志符。正则式被编译后生成一个对象,该对象有多种方法和属性。
正则式对象方法/属性
built-in method append of list object at 0xb7d4a52c handler(cc) #相当于li.append(cc) [a,b,c,cc] result = handler(bb) [a,b,c,cc,bb] print result None
Python实用技术一:正则表达式 用以表示“此处必须出现一个某某范围内的字符”,或者“此处必须出现一一个字符,但不可以是某某范围内的字符” ,但不可以十某某范围内的字符。
相关文章
- 【python教程入门学习】PyCharm下载和安装教程(包含配置Python解释器)
- python的安装教程_Python的安装
- python fileinput_Python之fileinput模块学习「建议收藏」
- Python正则表达式保姆式教学,带你精通大名鼎鼎的正则!
- python识别文字位置_如何利用Python识别图片中的文字
- python和java和c语言的区别-python c 和java的区别有哪些「建议收藏」
- python 多线程测试_【Python】多线程网站死链检测工具
- python语言一般用于什么_PYthon
- 【说站】python中使用动量交易策略
- Python 读取Excel-01安装xlrd
- python django 数据库_Apache+Mysql+PHP/Python简单项目
- Python 连接数据库两种方式
- Python自动化测试Selenium+chrome连接HTTP代理(账密+白名单)
- Python 实用技能 RAPIDS | 利用 GPU 加速数据科学工作流程
- 网络工程师学Python-1.1-安装Python解释器
- python-Python与SQLite数据库-SQLite数据库的基本知识(一)
- python-Python与SQLite数据库-使用Python执行SQLite查询(一)
- Python dict字典基本操作(包括添加、修改、删除键值对)
- Python建立SSH连接的方法详解编程语言
- Python学习:13.Python正则表达式详解编程语言
- Python学习:1.快速搭建python环境详解编程语言
- Linux系统快速运行Python脚本(linux运行python脚本)
- 在Linux上搭建Python开发环境(linux搭建python环境)
- 运维学python之爬虫基础篇(五)正则表达式
- python文件读写并使用mysql批量插入示例分享(python操作mysql)
- 在Linux上运行Python脚本的简单指南(linux运行python)
- python从MSSQL到Python:一段跨语言的旅程(mssql除以)
- 在Linux系统中使用Python编程语言(linux中python)
- 使用python在校内发人人网状态(人人网看状态)
- python调用windowsapi锁定计算机示例
- Python学习笔记_数据排序方法
- 零基础写python爬虫之神器正则表达式