Python3.6笔记之正则表达式
来源:互联网 发布:少女前线数据获取失败 编辑:程序博客网 时间:2024/04/29 21:38
在Python中使用正则表达式:
直接使用正则表达式
在Python中使用正则表达式需要导入re模块。
假设有一个字符串,里面有一些单词:”tip top tap tbp”,我想把里面的tip和top筛选出来,看代码实现:
import rereg = r"t[io]p"str = "tip top tap tbp"re.findall(reg, str) #这时会返回一个列表,里面包含匹配到的字符串
分组与无捕获分组
import restr1 = "I have a dog, I have a cat, I have an apple, she have a pen"#捕获分组reg1 = "I have a (dog|cat)"#无捕获分组,在括号里面加上“?:”reg2 = "I have a (?:dog|cat)"print(re.findall(reg1, str1))print(re.findall(reg2, str1))
运行结果:
圆括号内部是一个分组,匹配时被当做一个整体来看待。正如运行结果所示, 如果在括号中不加“?:”,程序只返回“dog”和“cat”,当加上“?:”时,就会把整个匹配到的字符串返回。
编译正则表达式
Python的re模块提供了一个正则表达式引擎的接口,可以让你将正则表达式编译成对象并用它们来进行匹配。
如果经常使用某个正则表达式,那么将正则表达式编译成对象会使匹配速度快很多。
普通编译
比如匹配电话号码的正则表达式,在程序中经常使用,那么就可以把它编译成对象来使用。
编译正则表达式:
import re #导入re模块r1 = r"^\d{3,4}-?\d{8}$" #定义正则表达式p_tel = re.compile(r1)#编译正则表达式p_tel #查看正则表达式对象p_tel.findall('010-12345678') #匹配字符串
带参数编译,实现特殊功能
忽略大小写
如果想匹配CCTV或cctv或CcTv,即忽略大小写,使用正则表达式可以这样写:
r1 = r'[Cc][Cc][Tt][Vv]' #定义正则表达式reg = re.compile(r1) #编译正则表达式reg.findall('CCTV') #匹配字符串,这时会匹配成功reg.findall('cctv') #这样也会匹配成功
但是如果要匹配的字符串不是CCTV,而是abcdefghijklmnopqrstuvwxyz,采用上述方法就会很麻烦了。解决办法就是在编译的时候加上一个参数,使得正则表达式在匹配字符串的时候忽略大小写。看下面的代码:
r1 = r'abcdefghijklmnopqrstuvwxyz' #定义正则表达式reg = re.compile(r1, re.I) #编译正则表达式,注意:加了一个参数“re.I”,是re中的一个属性reg.findall('ABCDEFGHIJKLMNOPQRSTUVWXYZ') #匹配字符串,这时也会匹配成功
正则表达式常用函数
分割字符串
在字符串的常用函数中,有这样一个用来分割字符串的函数,用法如下:
str1 = "123+456+789+100"list1 = str1.split("+")print(list1)
但是当上述代码中的str1是“123+456-789*321/890”的时候,我们再想把字符串中的数字分离出来,字符串中的split函数已经无法满足要求了,这个时候我们可以用正则表达式中的split函数来进行分割代码如下:
import restr1 = "123+234-456*789/100"reg = r"[\-\+\*/]" #这里面的“-”、“+”、“*”在正则表达式里有特殊含义,所以要想表示他们本身,要在前面加反斜杠来转义,而除号“/”不用reg_compile = re.compile(reg) #编译list1 = reg_compile.split(str1) #调用split函数,该函数返回一个列表print(list1) #打印列表
程序执行结果:
关于详细的正则表达式的用法,请参考我的另一篇博客正则表达式
阅读全文
0 0
- Python3.6笔记之正则表达式
- python3之正则表达式
- Python3之正则表达式详解
- Python3学习笔记11-正则表达式
- 深入Python3 (Dive Into Python3)笔记5--正则表达式
- python3爬虫之入门和正则表达式
- Python3爬虫之入门和正则表达式
- Python3爬虫之入门和正则表达式
- python3爬虫之入门和正则表达式
- [Python3]爬虫入门之正则表达式
- Python3:正则表达式
- Python3 re(正则表达式)
- python3正则表达式
- Python3正则表达式
- Python3 正则表达式
- Python3 re(正则表达式)
- Python3正则表达式
- Python3正则表达式使用
- ASP.NET MVC – 参考手册
- Error:Error: Expected resource of type id [ResourceType]打包apk是提示错误
- 深入:最大子序列和(多种算法)
- 1001. A+B Format (20)
- 新手用git命令上传本地项目到 Github
- Python3.6笔记之正则表达式
- mysql+mha+keepalived实现MHA架构
- 最小树形图
- java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memcpy"
- 使用Gradle将打包生成的apk移动至指定目录
- caffe 源码追踪--开篇
- 百度编辑器PHP上传大视频设置
- Linux DTS(Device Tree Source)设备树详解之三(高通MSM8953实例分析篇)
- 复杂链表的复制