python15正则表达式
------------恢复内容开始------------




















python实现实现实现实现



import re #将表达式编译,返回一个对象,
pattern = re.compile(r"hello",re.I)#re.I忽略大小写 print(dir(pattern))
#使用对象的方法,通过match匹配
rest = pattern.match("hellossss")
print(rest)
rest1 = pattern.match("Hellossss")
print(rest1)
print(dir(rest1)) 结果:
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__',
'__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'findall', 'finditer', 'flags', 'fullmatch', 'groupindex', 'groups', 'match', 'pattern',
'scanner', 'search', 'split', 'sub', 'subn']
<re.Match object; span=(0, 5), match='hello'>
<re.Match object; span=(0, 5), match='Hello'>
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__',
'__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'end', 'endpos', 'expand', 'group', 'groupdict', 'groups', 'lastgroup', 'lastindex',
'pos', 're', 'regs', 'span', 'start', 'string']

浏览全部字符串,匹配所有合规则的字符串,匹配到的字符串放到一个列表中,未匹配成功返回空列表 一旦匹配成,再次匹配,是从前一次匹配成功的,后面一位开始的,也可以理解为匹配成功的字符串,不在参与下次匹配 无分组:匹配所有合规则的字符串,匹配到的字符串放到一个列表中 有分组:只将匹配到的字符串里,组的部分放到列表里返回,相当于groups()方法 多个分组:只将匹配到的字符串里,组的部分放到一个元组中,最后将所有元组放到一个列表里返 相当于在group()结果里再将组的部分,分别,拿出来放入一个元组,最后将所有元组放入一个列表返回 分组中有分组:只将匹配到的字符串里,组的部分放到一个元组中,先将包含有组的组,看作一个整体也就是一个组,把这个整体组放入一个元组里,然后在把组里的组放入一个元组,最后将所有组放入一个列表返回
import re #使用编译
coent = "Oone1twoT2three3"
p = re.compile(r"[a-z]+",re.I)#r表示其后的字符串按原样表示,不使用转义字符
rest = p.findall(coent) #一列表的额形式返回
print(rest) #不编译直接使用方法
print(re.findall(r"[a-z]+",coent,re.I))
结果:
['Oone', 'twoT', 'three']
['Oone', 'twoT', 'three']

import re
content = "quan zhiqiang"
p = re.compile(r"zhi")
rest = p.search(content)
print(rest) print("QQQQQQQQQQQQQQQQ")
rest1 = p.match(content)
print(rest1)
#因为match从第一个字符开始寻找,第一个字符不匹配直接不寻找了,
#search会继续下一个查找 print("不编译,不编译")
no_rest = re.search("zhi",content)
print(no_rest)
结果:
<re.Match object; span=(5, 8), match='zhi'>
QQQQQQQQQQQQQQQQ
None
不编译,不编译
<re.Match object; span=(5, 8), match='zhi'>

import re def test_g():
content = "quanzhiqiang"
p = re.compile(r"zhi")
rest = p.search(content)
print(rest)#注意,当匹配不到的时候,需要对if rest 进行判断,不然直接
if rest:
#使用group打印会出错
print(rest.group())
#如果前面使用分株,可以group(1)
print(rest.groups())#因为没有进行分组,所以为空的元组 def test_id():
p = re.compile(r"(\d{6})(\d{4})((\d{2})(\d{2}))\d{2}\d{1}([0-9]|X)")
id1 = "440882199904142235"
id2 = "44088219990214228X"
rest1 = p.search(id2)
print(rest1.group(1))
print(rest1.groups())#放回说有的组
print("#######################")
print(rest1.groupdict()) if __name__ == "__main__":
test_g()
test_id() 结果:
<re.Match object; span=(4, 7), match='zhi'>
zhi
()
440882
('440882', '1999', '0214', '02', '14', 'X')
#######################
{}
import re def test_g():
content = "quanzhiqiang"
p = re.compile(r"zhi")
rest = p.search(content)
print(rest)#注意,当匹配不到的时候,需要对if rest 进行判断,不然直接
if rest:
#使用group打印会出错
print(rest.group())
#如果前面使用分株,可以group(1)
print(rest.groups())#因为没有进行分组,所以为空的元组 def test_id():
#p = re.compile(r"(\d{6})(\d{4})((\d{2})(\d{2}))\d{2}\d{1}([0-9]|X)")
p = re.compile(r"(\d{6})(?P<year>\d{4})((?P<month>\d{2})(?P<day>\d{2}))\d{2}\d{1}([0-9]|X)")
id1 = "440882199904142235"
id2 = "44088219990214228X"
rest1 = p.search(id2)
print(rest1.group(1))
print(rest1.groups())#放回说有的组
print("#######################")
print(rest1.groupdict()) if __name__ == "__main__":
test_g()
test_id() 结果;
<re.Match object; span=(4, 7), match='zhi'>
zhi
()
440882
('440882', '1999', '0214', '02', '14', 'X')
#######################
{'year': '1999', 'month': '02', 'day': '14'}

import re s = "one1two2three333four"
p = re.compile(r"\d+")
rest = p.split(s)
print(rest) 结果:
['one', 'two', 'three', 'four']

import re s = "one1two2three333four"
p = re.compile(r"\d+")
rest = p.split(s,2)#只分割前两个
print(rest) 结果:
['one', 'two', 'three333four']
import re s = "one1two2three333four"
#s = "one@two@three@four" p = re.compile(r"\d+")
rest = p.sub("@",s)
print(rest) #原始的替换方法:
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@")
rest1 = s.replace("1","@").replace("2","@").replace("333","@")
print(rest1) #更换位置
s2 = "hello world"
p2 = re.compile(r"(\w+) (\w+)")
rest3 = p2.sub(r"\2 \1",s2)
print(rest3) #使用函数进行替换更换并大写:
def f(m):
return m.group(2).upper() + " " + m.group(1)
print("HHHHHHHHHHHHHHHHHHHHHHH")
rest4 = p2.sub(f,s2)
print(rest4) #使用匿名函数替换
print("QQQQQQQQQQQQQQQQQQQQQQ")
rest6 = p2.sub(lambda m :m.group(2).upper() + " " + m.group(1),s2)
print(rest6) 结果:
one@two@three@four
@@@@@@@@@@@@@@@@@@@@@@@@@@@
one@two@three@four
world hello
HHHHHHHHHHHHHHHHHHHHHHH
WORLD hello
QQQQQQQQQQQQQQQQQQQQQQ
WORLD hello
------------恢复内容结束------------
python15正则表达式的更多相关文章
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 【JS基础】正则表达式
正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...
随机推荐
- beta事后分析
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 软件要解决的问题是是开发一个简易方便,为用户带来便捷且功能齐全的表情包管理小程序: 预期的典型用户 ...
- Scrum Meeting 0609
零.说明 日期:2021-6-9 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 完成前端功能 ...
- BUAA2020软工作业(三)——个人项目
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...
- 了解 js 堆内存 、栈内存 。
js中的堆内存与栈内存 在js引擎中对变量的存储主要有两种位置,堆内存和栈内存. 和java中对内存的处理类似,栈内存主要用于存储各种基本类型的变量,包括Boolean.Number.String.U ...
- Linux多线程实例解析
Linux系统下的多线程遵循POSIX线程接口,称为 pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a.顺便说一下,Linux ...
- AOP源码解析:AspectJExpressionPointcutAdvisor类
先看看 AspectJExpressionPointcutAdvisor 的类图 再了解一下切点(Pointcut)表达式,它指定触发advice的方法,可以精确到返回参数,参数类型,方法名 1 pa ...
- python 修饰器(decorator)
转载:Python之修饰器 - 知乎 (zhihu.com) 什么是修饰器,为什么叫修饰器 修饰器英文是Decorator, 我们假设这样一种场景:古老的代码中有几个很是复杂的函数F1.F2.F3.. ...
- 电路维修(双端队列 & 最短路)
达达是来自异世界的魔女,她在漫无目的地四处漂流的时候,遇到了善良的少女翰翰,从而被收留在地球上. 翰翰的家里有一辆飞行车. 有一天飞行车的电路板突然出现了故障,导致无法启动. 电路板的整体结构是一个$ ...
- Jmeter下载安装(一)
一.JMeter介绍 JMeter使用了不同技术和协议,是一款可以进行配置和执行负载测试.性能测试和压力测试的工具.负载测试.性能测试和压力测试概念: 负载测试: 这类测试使系统或者应用程 ...
- 高德地图API中折线polyline不能跨越180度经度线的解决方案
1.问题 最近在使用高德地图的API,有一个需求是画出对象的历史轨迹,采用了高德地图API中的折线polyline函数.但如果需要跨180度经度线的折线,会出现不能跨越的情况,如下图所示: 图中有三个 ...