python模块_re模块
- 正则表达式笔记
'''
#re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
#re.search 扫描整个字符串并返回第一个成功的匹配
#findall 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
#re.finditer 和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回
#re.split split方法按照能够匹配的子串将字符串分割后返回列表- re.split(pattern, string[, maxsplit=0, flags=0])
#注意: match 和 search 是匹配一次 findall 匹配所有
# 对于一个找不到匹配的字符串而言,split 不会对其作出分割
函数语法:
re.match(pattern, string, flags=0)
re.search(pattern, string, flags=0)
re.findall(string[, pos[, endpos]])
re.finditer(pattern, string, flags=0)
re.split(pattern, string[, maxsplit=0, flags=0])- #pattern 匹配的正则表达式
#string 待匹配的字符串。
#pos 可选参数,指定字符串的起始位置,默认为 0。
#endpos 可选参数,指定字符串的结束位置,默认为字符串的长度。
#maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
其中的flags则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志如下
修饰符 描述
re.I 使匹配对大小写不敏感 (Ignore case)
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $ (MultiRow)
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
'''
- import re
- #print(re.match('www', 'www.runoob.com').span()) # match会在起始位置匹配
- #print(re.match('com', 'www.runoob.com'))
- #print(re.search("[a-z]+[0-5]{3}",'NMasad123354675',flags= re.I).span())#返回匹配的下标号
- #print(re.search("[a-z]+[0-5]{3}",'NMasad123354675',flags= re.I))
- print(re.findall(r"\d+","1243afjhf1243"[:]))#返回列表
- it = re.finditer(r"\d+","1243afjhf1243")
- for i in it:
- print(i.group())#group() 返回被RE匹配的字符串
- import re
- line = "Cats are smarter than dogs"
- searchObj = re.search(r"(.*?) (.*?) .*",line, re.M|re.I)
- if searchObj:
- print ("searchObj.group() : ", searchObj.group())
- print ("searchObj.group(1) : ", searchObj.group(1))
- print ("searchObj.group(2) : ", searchObj.group(2))
- else:
- print ("Nothing found!!")
- '''
#我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法 描述
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
'''
#. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式
#* 匹配0个或多个的表达式。会优先考虑有的情况
#+ 匹配1个或多个的表达式。会优先考虑1个的情况
#? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方法
#注意:正则匹配默认是贪婪匹配,也就是匹配尽可能的多的字符
- #练习
- import re
- print("贪婪方法 :",re.match(r"^(\d+)(0*)$","10023400").group(1))#贪婪方法
- print("非贪婪方法 :",re.match(r"^(\d+?)(0*)$","10023400").group(1))#非贪婪方法
- print(re.split("[,|\\s]+","a b , d|aa"))
- pattern =re.compile(r"\d+")
- print(pattern.search("123sjkfh134").start())
- print(pattern.search("123sjkfh134").end())
- '''
#检索和替换 re模块提供了re.sub用于替换字符串中的匹配项
语法:re.sub(pattern, repl, string, count=0)
pattern: 正则中的模式字符串。
#repl: 替换的字符串,也可为一个函数。
string: 要被查找替换的原始字符串。
count: 模式匹配后替换的最大次数,默认0表示替换所有的匹配。
'''
- 练习:
- import re
- phone = "2004-959-559 # 这是一个电话号码"
- # 删除注释
- num = re.sub(r'#.+', "", phone)
- print("电话号码 : ", num)
- # 移除非数字的内容
- num = re.sub(r'\D', "", phone)
- print("电话号码 : ", num)
- #以下实例中将字符串中的匹配的数字乘于2
- def double(matched):
- value = int(matched.group('chengyu'))
- return str(value * 2)
- s = 'A23G4HFD567'
- print(re.sub('(?P<chengyu>\d+)', double, s)) #repl参数是一个函数
- print(re.search(r"(?P<name>[a-z]{3})","chengyu31232ashhcv").group("name"))
- '''
#compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用
当我们在Python中使用正则表达式的时候,re模块内会做两件事:
1.比编译正则表达式,如果正则表达式的字符串本身不合法,会报错;
2.用编译后的正则表达式取匹配字符串
如果一个正则表达式重复调用很多次,出于对效率的考虑,我们可以预编译正则表达式,
这样接下来重复使用就不需要编译这一步了,可以直接使用
语法:
re.compile(pattern[, flags])
'''
python模块_re模块的更多相关文章
- Python 正则表达式_re模块_使用compile加速
使用compile加速 compile( rule [,flag] ) 将正则规则编译成一个Pattern对象,以供接下来使用. 第一个参数是规则式,第二个参数是规则选项. 返回一个Pattern对象 ...
- python中string模块各属性以及函数的用法
任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串 ...
- python之platform模块
python之platform模块 ^_^第三个模块从天而降喽!! 函数列表 platform.system() 获取操作系统类型,windows.linux等 platform.platform() ...
- python之OS模块详解
python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...
- python之sys模块详解
python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...
- 学习PYTHON之路, DAY 6 - PYTHON 基础 6 (模块)
一 安装,导入模块 安装: pip3 install 模块名称 导入: import module from module.xx.xx import xx from module.xx.xx impo ...
- [Python Day5] 常用模块
目录: 1.模块介绍 2.time & datetime 3.random 4.OS 5.sys 6.shutil 7.json & pickle 8.shelve 9.xml 处理 ...
- python基础之模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合. 而对于一个复杂的功能来,可能需要多个函数 ...
- linux下python调用c模块
在C调用Python模块时需要初始化Python解释器,导入模块等,但Python调用C模块却比较简单,下面还是以helloWorld.c 和 main.py 做一说明: (1)编写C代码,hel ...
随机推荐
- 如何在自己设计的页面中调用metamask-1
启发: https://github.com/MetaMask/metamask-extension/issues/714 https://github.com/MetaMask/metamask-e ...
- 华为交换机常用命令(以s5700-SI为例)
交换机的三种模式: Access模式: 一般用来连接计算机与交换机. 此模式下有一个PVID就是本端口所属的VLAN号,如果从链路上收到无标签的帧,则打上默认VLAN号,然后发给其他端口,如果从链路上 ...
- IntelliJ IDEA2018.3 最新破解方法 无需改host
文章转自 https://blog.csdn.net/SmileLvCha/article/details/78936659 刚把idea升级到最新版,发现要重新激活,网上查了有改host的方法可行, ...
- maven 仓库配置 pom中repositories属性
文章转自http://blog.csdn.net/zlgydx/article/details/51130627 什么是Maven仓库在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录 ...
- javax.servlet.http.HttpServlet" was not found on the Java Build Path
问题解决(以maven为例): 只需在pom.xml导入对应的两个依赖即可解决该问题: <dependency> <groupId>javax.servlet.jsp</ ...
- php和js字符串的acsii码函数
简单普及下编码知识: javascript中有charCodeAt(),根据字符查找ascii码. String.fromCharCode(),根据ascii码查找对应的字符. console.log ...
- Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...
- WPF中DataGrid中的DataGridCheckBoxColumn用法(全选,全否,反选)
原文:WPF中DataGrid中的DataGridCheckBoxColumn用法(全选,全否,反选) 前台代码 <DataGrid.Columns> <DataGridCheckB ...
- ElasticSearch实践系列(二):探索集群
前言 为了方便ELK的逐步搭建,我们本篇文章先安装Kibana,然后用Kibana的DevTols执行命令.也可以安装elasticsearch-head运行命令. 安装Kibana 参考Instal ...
- javascript调用ActiveX接口失败的解决方案及使用心得
前段时间公司做了个比较大的项目,需要用到ocx控件,我厂大部分项目都采用C#.net,而winform程序条用ocx控件接口是相对简单的,但是javascript调用ocx接口,却和winform的用 ...