python正则表达式-re模块的爱恨情仇
利用python的re模块,使用正则表达式对字符串进行处理
# 编辑者:闫龙
import re
restr = "abccgccc123def456ghi789jgkl186000"
#re中的方法:
res=re.findall("abc",restr)
#获得匹配到的字符,并转化为列表['abc']
res=re.finditer("abc",restr)
next(res).group()
#获得匹配到的字符,并转成一个迭代器<callable_iterator object at 0x00000187BFA43DD8> res = re.search("abc",restr)
res.group()
#获得匹配结果对象,<_sre.SRE_Match object; span=(0, 3), match='abc'>
#只匹配一个结果
#通过group方法从对象中拿到结果
#否则None res = re.match("abc",restr)
res.group()
#获得匹配对象,<_sre.SRE_Match object; span=(0, 3), match='abc'>
#只匹配一个结果,而且匹配结果必须是开头
#通过group方法从对象中拿到结果
#否则None res = re.split("\d+",restr)
#获得匹配结果作为列表
#按照匹配字符拆分列表['abccccc', 'def', 'ghi', 'jkl', '']
res = re.split("\d+",restr,2)
#指定分割次数,只分两次
# ['abccccc', 'def', 'ghi789jkl186000'] res = re.sub("g","egonSomeBody",restr)
#sub用来将匹配的结果替换为新的字符串
#abccegonSomeBodyccc123def456egonSomeBodyhi789jegonSomeBodykl186000
res = re.sub("g","egonSomeBody",restr,1)
#指定替换次数,只替换第一个匹配结果
#abccegonSomeBodyccc123def456ghi789jgkl186000 res = re.compile("\d+")
res.findall(restr)
#保存正则表达式,直接调用给字符串
#['123', '456', '789', '186000']
print(res)
"""--------------------------------------------------------------------------------------------"""
#正则元字符
restr = "abccccc123def456ghi789jkl186000"
# . 通配符代表除了\n换行符之外的所有字符
res = re.findall(".",restr)
#['a', 'b', 'c', 'c', 'c', 'c', 'c', '1', '2', '3', 'd', 'e', 'f', '4', '5', '6', 'g', 'h', 'i', '7', '8', '9', 'j', 'k', 'l', '1', '8', '6', '0', '0', '0']
#任意字符匹配 #^以什么字符开头的字符串
res = re.findall("^abc.",restr)
#['abcc'] 以abc任意字符开头的匹配字符串 #$以什么字符结尾的字符串
res = re.findall("00$",restr)
#['00']以00结尾的匹配字符串 #+重复一个或多个字符
res = re.findall("c+",restr)
#['ccccc'] 重复c一个或多个匹配的字符串 #*重复0个或多个字符
res = re.findall("c*",restr)
#['', '', 'ccccc', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
#重复c,0个或多个匹配的字符串,所有""全部都是0个c的 #? 重复0个或1个字符
res = re.findall("c?",restr)
#['', '', 'c', 'c', 'c', 'c', 'c', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
#重复c,0个或1个匹配的字符串 #{}重复自定义次数
res = re.findall("c{2,3}",restr)
#['ccc', 'cc'] 匹配c,2个或者3个的字符串 #[]自定义出现的字符
restr = "abccccc123def456ghi666gai789jkl186000"
res = re.findall("g[ha]i",restr)
#['ghi', 'gai'] 匹配gh或ai的字符串
res = re.findall("[0-9]+",restr)
#['123', '456', '666', '789', '186000']匹配符合数字的字符串一个或多个
res = re.findall("[a-z]+",restr)
#['abccccc', 'def', 'ghi', 'gai', 'jkl']匹配符合字母的字符串一个或多个 #()分组字符串
res = re.findall("(ab)|(gh)",restr)
#[('ab', ''), ('', 'gh')]匹配(ab)或者(gh)的字符串 # | 或
res = re.findall("g|h",restr)
#['g', 'h', 'g']匹配g或者h的字符串 # \ 转义符,应用于将特殊符号转义,或将普通字符转义
#如\d就是全部数字,\.就是一个普通的点儿
#以上为元字符的介绍和使用方法 """---------------------------------------------------------------------------------------"""
#\d 匹配十进制数字,等同于[0-9]
res = re.findall("\d",restr)
#['1', '2', '3', '4', '5', '6', '7', '8', '9', '1', '8', '6', '0', '0', '0']
#所有匹配为十进制数字的字符串 #\D匹配非数字,等同于[^0-9]
restr = "abc1234"
res = re.findall("\D",restr)
#['a', 'b', 'c']匹配所有非数字字符 #\s 匹配空白字符,相当于[\t\r\n\f\v]
restr = "abc 1\t2\n34"
res = re.findall("\s",restr)
#[' ', '\t', '\n']匹配所有空格字符 #\S 匹配非空白字符,相当于[^\t\r\n\f\v]
restr = "abc 1\t2\n34"
res = re.findall("\S",restr)
#['a', 'b', 'c', '1', '2', '3', '4']匹配所有非空格字符 #\w 匹配字母和数字,相当于[a-Z0-9]
restr = "aZc-1(2;3.4"
res = re.findall("\w",restr)
#['a', 'Z', 'c', '1', '2', '3', '4']匹配所有字母和数字 #\W匹配非字母和非数字,相当于[^a-Z0-9]
restr = "aZc-1(2;3.4\n"
res = re.findall("\W",restr)
#['-', '(', ';', '.', '\n']匹配所有字母和数字 #\b 匹配一个特殊字符边界,相当于 空格,&,# 等
restr = "aZc-1 2& 3#4"
res = re.findall("\\b3",restr)
#['3']匹配3之前的边界 #特殊知识点:\\ 双反斜杠转义
restr = "hell\o"
res = re.findall("l\\\\o",restr)
#['l\\o'] 匹配l\o成功,这里要说明的是四个\是因为第一次是由python解释器翻译得到\\
#第二步是由正则解释,\\为转义后的\
python正则表达式-re模块的爱恨情仇的更多相关文章
- 注解:大话AOP与Android的爱恨情仇
转载:大话AOP与Android的爱恨情仇 1. AOP与OOP的区别 平时我接触多的就是OOP(Object Oriented Programming面向对象).AOP(Aspect Oriente ...
- pytorch和tensorflow的爱恨情仇之基本数据类型
自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀...) 无论学习什么框架或者是什么编程语言,最基础 ...
- Menu与ActionBar的爱恨情仇
最近在开发一款音乐播放器,在开发过程中遇到了一点小麻烦,通过android API搞清楚了Menu与ActionBar的爱恨情仇,写了个小Demo祭奠一下那些年我们陷进去的坑,有不对的地方请大神们批评 ...
- web移动端fixed布局和input等表单的爱恨情仇 - 终极BUG,完美解决
[问题]移动端开发,ios下当fixed属性和输入框input(这里不限于input,只要可以调用移动端输入法的都包括,如:textarea.HTML5中contenteditable等),同时存在的 ...
- python正则表达式Re模块备忘录
title: python正则表达式Re模块备忘录 date: 2019/1/31 18:17:08 toc: true --- python正则表达式Re模块备忘录 备忘录 python中的数量词为 ...
- Python面试题之Python正则表达式re模块
一.Python正则表达式re模块简介 正则表达式,是一门相对通用的语言.简单说就是:用一系列的规则语法,去匹配,查找,替换等操作字符串,以达到对应的目的:此套规则,就是所谓的正则表达式.各个语言都有 ...
- 除了love和hate,还能怎么表达那些年的“爱恨情仇”?
实用英语 帮你全面提高英语水平 关注 童鞋们每次刷美剧的时候,相信都会被CP感满满的男女主角虐得体无完肤吧. 可是,一到我们自己表达爱意或者恨意的时候,却苦于词穷,只会用love, like, hat ...
- 对json的爱恨情仇
本文回想了对json的爱恨情仇. C++有风险,使用需慎重. 本文相关代码在:http://download.csdn.net/detail/baihacker/7862785 当中的測试数据不在里面 ...
- String、StringBuilder、StringBuffer的爱恨情仇
第三阶段 JAVA常见对象的学习 StringBuffer和StringBuilder类 (一) StringBuffer类的概述 (1) 基本概述 下文以StringBuffer为例 前面我们用字符 ...
随机推荐
- 命令行执行python文件时提示ImportError: No module named 'xxx'
背景: 最近在写接口自动化测试框架的时候发现,框架使用pycharm ide的时候可以正常跑测试用例,但是在dos窗口输入命令执行测试的时候,import项目内部的包时报错“ModuleNotFoun ...
- [转帖]HTTPS系列干货(一):HTTPS 原理详解
HTTPS系列干货(一):HTTPS 原理详解 https://tech.upyun.com/article/192/HTTPS%E7%B3%BB%E5%88%97%E5%B9%B2%E8%B4%A7 ...
- BZOJ5099 POI2018Pionek
假设确定了最终所得向量的方向,则应该选择所有在该方向上投影为正的向量.按极角序排序后这显然是一段连续区间.最终向量方向很难枚举,但对于某个向量,在其上投影为正的向量与其夹角范围是(-π/2,π/2), ...
- MT【157】至少一个小于1
若函数$f(x)=x^2+ax+b$有两个不等实数根$x_1,x_2$,且$1<x_1<x_2<3$,那么$f(1),f(3)中$ ( )A.只有一个小于1 B.至少 ...
- 【纪中集训2019.3.23】IOer
题目 描述 你要在\(m\)天内,刷\(n\)道题,每天可以刷的题的数目不限: 第\(i\)天可以刷的题目的种类是\(ui+v\): 两种刷题的方案不同当且仅当某天刷题的数量不同或者依次刷题的种类不同 ...
- CF17E Palisection——优秀的综合计数题
题意翻译 给定一个长度为n的小写字母串.问你有多少对相交的回文子 串(包含也算相交) . 输入格式 第一行是字符串长度n(1<=n<=2*10^6),第二行字符串 输出格式 相交的回文子串 ...
- Maven问题合集
背景:总结maven使用过程中的相关问题,方便以后查询! 1 问题汇总 今天在导入github上下载的maven项目时候,出现了一堆错误,一时间不知道该如何下手. 根据错误提示,发现是一些依赖的jar ...
- MVC4.0中cshtml中怎么解析html编码
http://bbs.csdn.net/topics/391060108?page=1 问题描述: 数据库中存储带有格式的文本,如 <span style="color:#333333 ...
- 三、Linux学习之命令基本格式篇
一.命令格式 命令 [选项] [参数] 注意: 1.和别命令使用不遵循此格式 2.当有多个选项时,可以写在一起 3.简化选项与完整选项(-a 等价于--all) 4.中括号为可选,意思是可以有可以没有 ...
- Java入门:基础算法之检查素数
程序提示用户输入一个数,然后检查所输入的数是否是素数. import java.util.Scanner; class PrimeCheck { public static void main(Str ...