正则函数及面向对象开发初识---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语言作为静态面向对象编程语言的代表 ...
随机推荐
- [转帖]LVS入门篇(四)之LVS实战
LVS入门篇(四)之LVS实战 https://www.cnblogs.com/linuxk/p/9360922.html 一.LVS的NAT模式实战 1.环境说明: HOST OS role rem ...
- [转帖]SPEC-cpu2006的详细使用一键安装、手动安装。
一.SPEC-cpu2006简介 SPEC CPU 2006 benchmark是SPEC新一代的行业标准化的CPU测试基准套件.重点测试系统的处理器,内存子系统和编译器. 说明:由于spec2006 ...
- Linux下PG数据库计划任务定期备份恢复的方法
注意事项 PG数据库需要注意的一点是需要安装OSSP-UUID的组件才能使用. 本次使用最除了冷备之外 最简单的 pg_dump和pg_restore的操作 的方式来进行处理 务必定期演练保证数据备份 ...
- 华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力
本文分享自华为云社区<华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力>,作者: 云容器大未来. 基于eBPF的容器监控的兴起 容器具有极致弹性.标准运行时.易于部署等 ...
- elementui中el-checkbox 选中时的详细介绍
checkbox-group 把多个checkbox管理为一组(需要注意的坑) 很多时候我们需要会遇见这样的场景. 比如用户需要选择多个值. 这个时候我们需要把多个 checkbox 放置在check ...
- Natapp 邀请码 积分
邀请码: 29F145FC 充值95折
- ETL之apache/hop-web 2.5安装和简单入门
一.使用Docker 安装部署 1.拉取镜像 推荐使用下面的web版本 docker pull apache/hop:latest docker pull apache/hop-web:latest ...
- C# 使用RabbitMQ消息队列
参考文章 https://www.cnblogs.com/kiba/p/11703073.html和https://www.cnblogs.com/longlongogo/p/6489574.html ...
- 常见的for循环优化方式
?> 前言 经常使用一些循环,进行耗时计算的操作,特别是 for 循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当,将大大提高效率,下面总结几条 for 循环的常见优化 ...
- python快速入门【五】---- 面向对象编程、python类
python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...