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 ...
随机推荐
- day14 Python集合关系运算交,差,并集
low逼写法,没用集合 python_1 = ['charon','pluto','ran'] linux_1 = ['ran','xuexue','ting'] python_and_linux = ...
- P1006 传纸条-洛谷luogu-dp动态规划
题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个mm行nn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运 ...
- Intel CPU 漏洞分析
Intel CPU漏洞分析报告 预备知识 存储分级 由于计算机存储分级的特性(第一级:寄存器,第二级:高速缓存,第三级:内存,第四级:磁盘),每一级之间的访问速度差距高达数量级.所以处理器会将用到的数 ...
- PAT A1099 Build A Binary Search Tree (30 分)——二叉搜索树,中序遍历,层序遍历
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...
- springdashboard环境搭建
SpringCloud Hystrix Dashboard Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各H ...
- Fragment+FragmentActivity出现The specified child already has a parent. You must call removeView() on the child's parent first.
这个异常是出现在Fragment中的onCreateView方法中初始化布局时发生的. View view = inflater.inflate(R.layout.fragment3_layout, ...
- Android Studio 导入工程
最简单的方式 等待加载完就好了 第二种方式 在导入别人的android studio项目(假设为项目A)时,会遇到gradle不一致的情况,以下简短介绍解决方法: 1. 打开要导入的项目的目录,删除下 ...
- SpringBoot favicon.ico
默认的favicon.ico spring boot 默认输出spring的logo, 可以使用spring.mvc.favicon.enabled=false将其关闭 ############### ...
- VB6 加密解密字符串
Public Function EnCodeStr(ByVal password As String) As String Dim il_bit, il_x, il_y, il_z, il_len, ...
- Log4j2使用笔记
log4j2是log4j的最新版,现在已经有很多公司在使用了.log4j2和log4j的优缺点对比,请自行百度. 上一篇笔记讲了关于log4j的使用.这篇笔记主要讲解log4 ...