正则函数及面向对象开发初识---day19
1.正则函数
# ### 正则函数
import re
#search 通过正则匹配出第一个对象返回,通过group取出对象中的值
strvar = "1+2 3*4"
obj = re.search("\d+(.*?)\d+",strvar)
#返回匹配到的内容(匹配到一个就返回)
print(obj.group()) #1+2
#把括号里匹配到的内容扔到元组中返回
res = obj.groups()
print(res) #match 验证用户输入内容(了解)
"""search 只要在正则表达式的前面加上^ 就和match一模一样"""
strvar = "y13566688771"
strvar = "13566688771"
obj = re.search("^\d+",strvar)
print(obj.group()) #13566688771 obj = re.match("\d+",strvar)
print(obj,group()) #split 切割
strvar = "alex|xboy&wusir-egon"
res = re.split("[|&-]",strvar)
print(res) #['alex', 'xboy', 'wusir', 'egon'] strvar = "alex23423411122334xboyww90909045wusir78"
res = re.split("\d+",strvar)
print(res) # ['alex', 'xboyww', 'wusir', ''] #这后面还有个空格 #sub 替换(正则表达式,替换的字符串,原字符串,[可选替换的次数])
strvar = "alex|xboy&wusir-egon"
#strvar.replace("|","%")
#strvar.replace("&","%")
#strvar.replace("-","%") res = re.sub("[|&-]","%",strvar)
print(res) #alex%xboy%wusir%egon
res = re.sub("[|&-]",strvar,1)
print(res) # alex%xboy&wusir-egon 字符串 #subn 替换与sub用法一样,区别在于返回值不同,返回的是元组
res = re.subn("[|&-]","%",strvar)
print(res) #('alex%xboy%wusir%egon', 3) #返回的第二个参数为修改的次数
res = re.subn("[|&-]","%",strvar,1)
print(res) #('alex%xboy&wusir-egon', 1) #finditer 匹配字符串中相应的内容 返回迭代器
from collections import Iterator
strvar = "sdfasf234234你好23423"
it = re.finditer(r"\d+",strvar)
print(isinstance(it,Iterator)) #True
"""
lst = list(it)
print(lst)
[
<_sre.SRE_Match object; span=(6, 12), match='234234'>,
<_sre.SRE_Match object; span=(14, 19), match='23423'>
] 234234
23423
"""
for i in it:
print(i.group()) #compile 指定一个统一的匹配规则
'''
正常情况下,正则表达式执行一次,编译一次
如果需要反复使用,会浪费系统资源,比如内存,cpu compile 可以使正则编译一次,终身受益,无需反复编译
'''
strvar = "sdfasf234234你好23423"
pattern = re.compile("\d+")
print(pattern) ## re.compile('\\d+') obj = pattern.search(strvar)
print(obj.group()) # # 234234
lst = pattern.findall(strvar)
print(lst) #['234234', '23423'] #修饰符
#re.I 使匹配对大小写不敏感
strvar = "<h1>123<H1>"
pattern = re.compile("<h1>(.*?)</h1>",flags=re.I)
obj = pattern.search(strvar)
print(obj)
print(obj.group()) #<h1>123</H1> # re.M 使每一行都能够单独匹配(多行匹配) 影响 ^ 和 $
strvar = """<h1>123</H1>
<p>123</p>
<div>123</div>
"""
pattern = re.compile("^<.*?>(?:/*?)<.*?>$",flags=re.M)
print(pattern.findall(strvar)) #['<h1>123</H1>', '<p>123</p>', '<div>123</div>'] #re.S 使 . 匹配包括换行在内的所有字符
strvar = """give
1112233mefive
"""
pattern = re.compile("(.*?)mefive",flags=re.S)
obj = pattern.search(strvar)
print(obj.group())
"""
give
1112233mefive
"""
2.面向对象初始
# ###oop 面向对象程序开发 #(1) 类的定义
class Car:
pass class Car(): #推荐
pass class Car(object):
pass #(2) 类的实例化
class Car():
pass
obj = Car() #类名加() => 实例化一个对象 #(3)类的基本结构
'''
类中只有2种成员
(1)成员属性
(2)成员方法
'''
class Car():
#成员属性
color = "屎黄色的"
#成员方法
def func(self):
print("小车会跑") #反例
'''
类中的代码可以直接指向,但是严禁使用,不要直接把代码裸露在类中
应该把相应的逻辑放在成员方法当中处理
'''
class Car():
if r == 5:
print(4567) #正确方法
class Car():
def func(self):
if 5 == 5:
print(4567) #(4) 类的命名
'''
类的命名推荐使用大驼峰命名法
mycar => MyCar
dahuangfeng => DaHuangFeng
'''
#面向对象总结:
面向过程:
(1)优点:效率高,执行速度快
(2)缺点:维护性差,移植性差,表达不出一类的语意
面向对象:
(1)优点:可读性,可移植性,可维护性高
(2)缺点:执行效率稍慢
正则函数及面向对象开发初识---day19的更多相关文章
- Java面向对象编程 第一章 面向对象开发方法概述
一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...
- Java面向对象 第一章 面向对象开发方法概述
一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...
- ASP.NET的简单与面向对象开发
ASP.NET开发,一开始是为了超赶时间完成任务,只能把功能实现即可.如下面一个功能,在网页中有一个铵钮,用户点一点切换网页的图片,再点一点又切换回来.我们要怎样做?在铵钮事件中去变更图片的路径即可. ...
- 新手如何理解JS面向对象开发?
今天有时间讲讲我对面向对象的理解跟看法,尽量用通俗的语言来表达,多多指教! 如今前端开发已经越来越火了,对于前端开发的要求也是越来越高了,在面试中,经常有面试官会问:你对JS面向对象熟悉吗? 其实,也 ...
- 使用 Dojo 掌握面向对象开发
原文出处:Joe Lennon 从头开始学习 Dojo,第 2 部分 使用 Dojo 掌握面向对象开发 什么是面向对象开发? 面向对象编程(Object-Oriented Programming,OO ...
- javaScript 面向对象开发实例
javaScript 面向对象开发实例 这个是结合require的模块化开发,首先创建构造函数: //test.js 1 function Test(lists) { var config={ nam ...
- JavaScript 面向对象开发知识基础总结
JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...
- CMM模型,结构化开发方法和面向对象开发方法的比较,UML(统一建模语言),jackson开发方法
CMM模型 一.CMM简介 CMM,英文全称为Capability Maturity Model for Software,即:软件成熟度模型. CMM的核心是把软件开发视为一个过程.它是对于软件在定 ...
- 侯捷《C++面向对象开发》——动手实现自己的复数类
前言 最近在看侯捷的一套课程<C++面向对象开发>,刚看完第一节introduction之后就被疯狂圈粉.感觉侯捷所提及所重视的部分也正是我一知半解的知识盲区,我之前也写过一些C++面向对 ...
- Java入门基础—面向对象开发
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表 ...
随机推荐
- stress-NG 磁盘测试结果-全国产信创部分验证
stress-NG 磁盘测试结果 摘要 前几天分别还是用了redis-benchmark还有specjvm2008进行了多种系统的压测 得出了信创CPU的一些简单结论 但是一直还没有压测磁盘, 今天想 ...
- [转帖]Tomcat 优雅关闭之路
本文首发于 vivo互联网技术 微信公众号链接:https://mp.weixin.qq.com/s/ZqkmoAR4JEYr0x0Suoq7QQ作者:马运杰 本文通过阅读Tomcat启动和关闭流程的 ...
- [转帖]a.out、coff、elf三种文件格式
补充:a.out早期并不是elf格式的,而是unix下另一种可执行格式,新的a.out是 本文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and li ...
- [转帖]SPEC2006移入docker后的运行问题
https://www.cnblogs.com/csxyc/p/7157890.html 实验需要给SPEC2006的benchmark绑定CPUID,于是想到用docker分配CPU资源,写一个简单 ...
- 验证功能访问Redis的次数和命令
背景 公司内部在进行性能调优, 调优有多个方法. 应用Redis方面主要的调优有: 1. 进行redis键值对大小的处理. 2. 进行redis键值对过期时间的处理. 3. 减少连接数,减少网络带宽. ...
- js遍历树形结构并返回所有的子节点id值
场景 很多时候我么需要返回返回tree结构下的所有自己节点 很显然这个时候需要遍历了 废话不多说 直接递归遍历 数据结构 var treeData = [{ id: 111, title: " ...
- Qt中qreal的坑
今天在写Qt的时候遇到了一个bug:同样一个方程在PC机上算的结果是11,但在arm-Linux设备上算出来的结果是12,我自己用计算器按出来的结果也是12. 该段程序是这样的: maxnumbar ...
- 【笔记】VictoriaMetrics中,对大量的pull模式的targets进行分片
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 配置的方法请看这里:https://docs.victor ...
- 【分享笔记】druid存储系统-思维导图
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu 公众号:一本正经的瞎扯 源于:<Druid实时大数据分析原理与实践>这本书的阅读笔记 ...
- Vue基础系统文章07---webpack安装和配置与打包
1.当前web开发困境 a.文件依赖关系错综复杂 b.静态资源请求效率低 c.模块化支持不友好 d.浏览器对高级js兼容性低 例如:模块代码实现隔行换色 1)在新建空白文件夹中运行:npm init ...