2019-11-27-Python正则表达式

1127正则表达式与内存管理

  1. 内存管理:内存分为栈区间和堆区间,栈区间的内存是系统自动申请释放;堆上的内存需要程序通过调用malloc函数去申请,通过调用free函数去释放;

    高级语言(java、C++、0C、Python)中内存管理机制,都是针对堆上的内存的管理进行自动化操作

  2. Python内存管理机制:

    1)内存申请:Python中所有数据都是存于堆中;变量与函数调用过程压栈存于栈中,变量中保存堆中数据的地址;如果使用数字和字符串给变量赋值,会先检查内存是否有这个数据,如果有会直接将原来的数据地址赋予变量;除了字符串和数字以外,别的数据重新赋值会赋予新的地址

    2)内存释放(垃圾回收机制):在Python中,一个数据对应的内存空间是否释放,取决于这个数据的引用计数是否为0,如果为0就会被释放

    a. 增加引用计数:增加数据的引用

    b. 减少引用计数:删除引用,或者让引用去保存新的数据

    c. 循环引用:Python垃圾回收机制会自动处理循环引用问题

  3. 拷贝:

    1)浅拷贝copy:复制原数据,外层拷贝,返回一个新地址,内层可变数据类型不会拷贝

    2)深拷贝deepcopy:浅拷贝基础上,递归拷贝,内层可变数据类型也会拷贝获得新地址

  4. 正则表达式:re模块;主要解决生活中字符串匹配问题

    1)用正则符号来描述字符串规则,使字符串匹配更简单的一种工具;几乎所有的编程语言都支持正则

    2)正则符号之匹配符号:

    ​ a. 普通字符:在正则表达式中没有特殊意义的字符

    ​ b. ‘.’:代表一个任意字符

    ​ c. ‘\d’:匹配任意一个数字字符,‘\D’:与小写相反

    ​ d. ‘\s’:匹配任意一个空白字符,‘\S’:与小写相反

    ​ e. [字符集]:匹配字符集中的任意一个字符,一个[]只能匹配一个字符

    ​ f. [字符1-字符2]:匹配任意一个字符1到字符2之间的字符

    ​ g. [ ^字符集]:匹配除了字符集以外的任意一个字符

    3)正则符号之检测符号:只检查不匹配

    ​ a. ‘\b’:检测是否是单词边界

    ​ b. ‘^‘:检测字符开头

    ​ c. ’$‘:检测字符串结尾

    4)匹配次数:

    ​ a. ’?‘:匹配0次或1次

    ​ b. '*':匹配任意次数

    ​ c. ’+‘:匹配1次或多次

    ​ d. {N}:匹配N次

    ​ e. {M,N}:匹配M到N次

    ​ f. {M,}:匹配至少M次

    ​ g. {,N}:匹配最多N次

    5)贪婪与非贪婪:匹配次数不确定时有贪婪和非贪婪两种状态

    ​ a. 默认是贪婪:在匹配成功的前提下,尽可能多的匹配

    ​ b. 非贪婪:在贪婪符号后添加’?‘,在匹配成功的前提下,尽可能少的匹配

    6)分支和分组:

    ​ a. 分支|:正则1|正则2,|相当于或的意思,先让正则1匹配,只有一个匹配成功就成功

    ​ b. 分组():把()当成一个整体,例如:(正则表达式)匹配次数-- 整体控制次数

    ​ c. 重复:()字符\n,表示重复n次()内的内容

你可能感兴趣的:(2019-11-27-Python正则表达式)