Python 正则表达式——re模块介绍
Python 正则表达式
re 模块使 Python 语言拥有全部的正则表达式功能,re模块常用方法:
re.match函数
re.match从字符串的起始位置匹配,如果起始位置匹配不成功,则match()就返回none。,如果匹配成功,则可通过group(num) 或 groups()获取匹配结果。
函数语法
re.match(pattern,string,flags=0)
函数参数
pattern : 正则表达式
string : 字符串。
flags : 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写等等
flags模式
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $re.S使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 w, W, , B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
import re
re_str='The re module gives the Python language full regular expression capabilities.'
match_str=re.match('The r(.+?)', re_str)
# group() 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
print(match_str.group())
输出 The re
print(match_str.group(1))
输出 e
# 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
print(match_str.groups())
输出 ('e',)
# 其实位置匹配不成功则返回None
match_str=re.match('module',re_str)
print(match_str)
输出 None
# 设置为对大小写不敏感,re.I
match_str=re.match('the r(.+?)',re_str,re.I)
print(match_str.group())
输出 The re
re.search方法
re.search 对整个字符串进行匹配并返回第一个成功的匹配字符串,否则返回None。 我刚整理了一套2018最新的0基础入门和进阶教程,无私分享,加Python学习q u n :227-435-450即可获取,内附:开发工具和安装包,以及系统学习路线图
函数语法
re.search(pattern,string,flags=0)
函数参数
pattern : 正则表达式
string : 字符串
flags : 标志位
search_str=re.search('r(.+?)', re_str)
print(search_str.group())
输出 re
re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,而re.search匹配整个字符串,直到找到一个匹配,并返回第一个被匹配到的字符串。
findall
在字符串中匹配所有满足正则表达式的字符串,并返回一个列表,如果没有找到匹配的,则返回空列表。
函数语法
findall(string[,pos[,endpos]])
函数参数
string : 待匹配的字符串。
pos : 可选参数,指定字符串的起始位置,默认为 0。
endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。
findall_str=re.findall('i.+?',re_str)
print(findall_str)
# 上面还是使用re.findall的方式,这里推荐使用re.compile生成正则表达式对象,然后按照上面参数说明使用该函数,如下。
pattern=re.compile('i.+?')
pattern.findall(re_str)
输出 ['iv', 'io', 'il', 'it', 'ie']
re.split
split 方法按照能够匹配的子串将字符串分割后返回列表
函数语法
re.split(pattern,string[,maxsplit=0,flags=0])
函数参数
pattern : 正则表达式
string : 字符串
maxsplit : 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
flags : 标志位
split_str=re.split('i.+?',re_str)
print(split_str)
输出 ['The re module g', 'es the Python language full regular express', 'n capab', '', '', 's.']
附 呕心沥血整理的正则表达式的语法规则
正则表达式的语法规则
正则表达式的语法规则

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Debug JDK源码没变量值怎么办?
对于程序员而言,阅读源码是一个非常重要的能力,相信Java程序员最常看的就是JDK的源码了,但有时候我们想具体看看源码在运行时某个变量的值,就会发现Debug时看不到变量的值,这是因为官方在编译 rt.jar 中的类的时候去除了调试信息,那么该怎么办呢? 有两种办法:一种是去网上找编译好有调试信息的 rt.jar,另一种是自己去编译JDK源码,下面就是自己编译的详细过程,希望大家第一次不要怕麻烦,跟着做,弄好之后以后调试就非常方便了 问题效果图: 解决后的效果: 具体步骤: 1.制作可调试的 rt.jar 包 1.1 .在D盘新建jdk7_src及jdk7_rt-debug两个文件夹 1.2.复制JDK源码 将环境变量中配置的java_home地址或者将用的外部JDK安装目录下的src.zip 复制到D:/jdk7_src,解压.效果如下图 1.3.选择要编译的源码 原文中说,留下Java,javax,org三个文件夹就足够了,其他都可以删除。 我只是把swing的内容删除了,其他都留下了。大伙可以随意。 swing包目录位置:com\sun\java\swing,javax\swin...
- 下一篇
对.NET Core未来发展趋势的浅层判断
经常听到园里.NET开发人员在抱怨生态不如JAVA,想要转JAVA,所谓打不过你,我就加入你!杜兰特的思维方式固然是获取总冠军的一种方式,但是我们要关起门来问自己有没有杜兰特的实力。 用开发生态来类比NBA不是特别恰当,因为NBA只有一个总冠军,但是开发生态一枝独放不是春,百花齐放春满园。我个人觉得做.NET生态的一员,完全没有必要自卑,而是应该感到荣幸,随着你认知的不断深入,你完全可以拥抱其他生态,自成一家。如果你实在觉得JAVA或者.NET不能满足你的需要,你也可以考虑GO或者Python。你转来转去,付出巨大的代价,最后薪资不见得每个月会增加多少,可能在你转化的过程中,你还损失了不少。 存在即是合理,我试着从自己的有限经验来对.NET Core未来做一个武断:我觉得.NET Core对其他生态不会构成什么威胁,.NET Core会给人家多个一个选择,所以新人和新公司的大部分,旧人和旧公司的小部分会被吸粉,但是大的方面不会有什么变化。不会像人说的那么好,也不会差到哪里去。但是.NET Core会因为微软这个巨人的重新崛起,而名声鹊起。 历史底盘 从就业面来看,.NET主要集中在中小...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7设置SWAP分区,小内存服务器的救世主