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 ...
随机推荐
- Ubuntu上安装paparazzi
这个值得看: https://www.bilibili.com/video/av16824692?from=search&seid=14509366447693533881
- 安装Drush工具 -Centos
Drush可以说是Drupal的瑞士***,只要你使用过一段时间的Drush,一但没有它的话,你会觉得很不方便.可如果通过我在前面博文中所讲的方法来安装Drush的话,是不能够支持Drupal8的,所 ...
- php中按值传递和按引用传递的一个问题
php中传递变量默认是按照值传递. 简单举个例子: <?php function testArray($arr){// &$arr $arr = array(1,2,3,); } $ar ...
- 【vue】chrome已安装Vue Devtools在控制台却无显示
chrome已安装Vue Devtools在控制台却无显示的解决: 在点亮Vue Devtools图标后,控制台没有vue解读显示. 原因:脚手架配置NODE_ENV直接定义为了production版 ...
- thymeleaf给bootstrap自定义变量赋值
最近在做一件事情,前端用的是thymeleaf进行渲染,thymeleaf是通过 th的标签来赋值对应的后端变量的.但是遇到一个尴尬的问题,bootstrap是可以通过data-xxx,来自定义变量的 ...
- H+ 后台主题UI框架
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 今天得到了一个非常完美的后端管理系统框架:H+ 后台主题UI框架 H+ 后台主题UI框架 H+是一个完全响应式,基于Bootstrap3.3.6最新 ...
- CentOS上yum方式安装配置LNMP
实验环境 一台最小化安装的CentOS 7.3虚拟机 安装软件包 yum install -y epel-* yum install -y nginx mariadb-server php php-m ...
- os模块 与 sys模块
os模块 os模块是与操作系统交互的一个接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工 ...
- MySQL针对Swap分区的运维注意点
Linux有很多很好的内存.IO调度机制,但是并不会适用于所有场景.对于运维人员来说,Linux比较让人头疼的一个地方是:它不会因为MySQL很重要就避免将分配给MySQL的地址空间映射到swap上. ...
- php 中self,this的区别和实地操作
面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行PHP的高级编程,对于提高PHP编程能力和规划web开发构架都是很有意 ...