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的更多相关文章

  1. Java面向对象编程 第一章 面向对象开发方法概述

    一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...

  2. Java面向对象 第一章 面向对象开发方法概述

    一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...

  3. ASP.NET的简单与面向对象开发

    ASP.NET开发,一开始是为了超赶时间完成任务,只能把功能实现即可.如下面一个功能,在网页中有一个铵钮,用户点一点切换网页的图片,再点一点又切换回来.我们要怎样做?在铵钮事件中去变更图片的路径即可. ...

  4. 新手如何理解JS面向对象开发?

    今天有时间讲讲我对面向对象的理解跟看法,尽量用通俗的语言来表达,多多指教! 如今前端开发已经越来越火了,对于前端开发的要求也是越来越高了,在面试中,经常有面试官会问:你对JS面向对象熟悉吗? 其实,也 ...

  5. 使用 Dojo 掌握面向对象开发

    原文出处:Joe Lennon 从头开始学习 Dojo,第 2 部分 使用 Dojo 掌握面向对象开发 什么是面向对象开发? 面向对象编程(Object-Oriented Programming,OO ...

  6. javaScript 面向对象开发实例

    javaScript 面向对象开发实例 这个是结合require的模块化开发,首先创建构造函数: //test.js 1 function Test(lists) { var config={ nam ...

  7. JavaScript 面向对象开发知识基础总结

    JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...

  8. CMM模型,结构化开发方法和面向对象开发方法的比较,UML(统一建模语言),jackson开发方法

    CMM模型 一.CMM简介 CMM,英文全称为Capability Maturity Model for Software,即:软件成熟度模型. CMM的核心是把软件开发视为一个过程.它是对于软件在定 ...

  9. 侯捷《C++面向对象开发》——动手实现自己的复数类

    前言 最近在看侯捷的一套课程<C++面向对象开发>,刚看完第一节introduction之后就被疯狂圈粉.感觉侯捷所提及所重视的部分也正是我一知半解的知识盲区,我之前也写过一些C++面向对 ...

  10. Java入门基础—面向对象开发

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表 ...

随机推荐

  1. Windows设置一键安装Mysql数据库的方法

    Windows设置一键安装Mysql数据库的方法 前言 因为MySQL数据库的8126 65536 以及3072最大索引长度等问题 研发这边提交的补丁总是出现稀奇古怪的问题. mysql数据库又因为D ...

  2. unzip 解压缩存在Bug-- 这个方法不行啊

    linux中解压大于4G的zip压缩包(已解决) tar -zxvf 压缩包名.zip

  3. 一台不容错过的Java单元测试代码“永动机”

    作者:京东零售 陈志良 作为一名京东的软件匠人,我们开发的软件支撑着数亿的用户,责任是重大的,因此我们深深地敬畏每一行代码,那如何将我们的失误降到最低呢?那就是单元测试,它会让我们树立对代码的自信心. ...

  4. 真·Android Zxing 扫码中文乱码解决

    Zxing3.2.1 之前遇到过Android Zxing扫码乱码的问题,网上搜了下解决了下. 今天又遇到了问题. 依然会乱码. 研究总结如下: Zxing 可以在Hints中添加默认编码格式.这个编 ...

  5. 2024-01-27:用go语言,阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有N堆金币, 第i堆金币的总重量和总价值分别是m[i]、v[i], 阿里巴巴有一个承重量为T的背包,但并不一定有办法将全部的

    2024-01-27:用go语言,阿里巴巴走进了装满宝藏的藏宝洞.藏宝洞里面有N堆金币, 第i堆金币的总重量和总价值分别是m[i].v[i], 阿里巴巴有一个承重量为T的背包,但并不一定有办法将全部的 ...

  6. 数组 vs. 切片

    在Go编程语言中处理数据时,经常会遇到数组和切片.这两者是不同的数据结构,有各自的特性和用途.本文将对Go中的数组和切片进行比较,以帮助大家更好地理解它们. 1. 长度不同 一个主要的区别是长度.在G ...

  7. 乌班图安装docker

    目录 一.前言 二.安装 2.1 设置仓库 2.3 安装 Docker Engine 2.4 安装特定版本的 Docker Engine: 2.5 测试 三.配置非 root 用户运行 Docker ...

  8. C++ Qt开发:数据库与TableView多组件联动

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableVi ...

  9. MySQL安装 starting the server解决办法

    https://blog.csdn.net/qq_52183856/article/details/123792012 主要原因:

  10. 图解Java原理

    1:强制类型转换数据溢出 2:顺序结构的流程图 3:单if语句的流程图 4:标准if-else语句的流程图 5:扩展if-else语句的流程图 6:for循环流程图