python基础13 ---函数模块3(正则表达式)

正则表达式

一、正则表达式的本质

  1、正则表达式的本质(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。

  2、正则表达式简介

    正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分  强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是  不常用的部分。

二、正则表达式元字符。(.  * + ? ^ $ {} [] \ | ())

  1、" . "表示匹配字符串中除换行符外的任意字符。

    eg:re.findall(‘a.‘,‘abc‘) #返回的结果是ab

  2、" + "表示匹配前一个子表达式一次或多次,相当于一到正无穷。{1,}

    eg:re.findall(‘a+‘,‘abc‘) #返回的结果是a

  3、" * "表示匹配前一个子表达式零次或多次,相当于零到正无穷。{0,}

    eg:re.findall(‘aa*‘,‘abc‘) #返回的结果是a

  4、" ? "表示匹配前一个子表达式零次或一次,相当于零和一。{0,1}

    eg:re.findall(‘aa?‘,‘abc‘) #返回结果为a

  5、" ^ "(脱字符)表示匹配字符串开始的位置,也就是说只有目标字符串出现在开始位置才会匹配。

    eg:re.findall(‘^ab‘,‘abcabcabc‘) #返回的结果是ab

  6、" $ "(美元符)表示匹配字符串的末尾位置,也就是说只要目标字符串出现的末尾的位置才会匹配。

    eg:re.findall(‘bc$‘,‘abcabc‘) #返回的结果为bc

  7、" {x,y} "(大括号)表示匹配前面一个子表达式至少为x次最多为y次,其中x,y都为非负数,x<y。

    eg:re.findall(‘a{2,4}‘,‘abcaaaabc‘) #返回的结果为aaaa

  8、" [x,y] "(中括号)表示匹配中括号里面任意一个字符,如果匹配成功则返回结果,其中中括号内所有特殊字符都失去作用,只有“-”,“\”,“ ^ ”有其特殊意义。

    eg:re.findall(‘a[b,c,d]c‘,‘abcadcafc‘) #返回的结果为abc,adc

  注意:-在中括号中表示范围,^在中括号中表示取反,\在中括号中保留其原来功能。

  9、" () "表示将需要匹配的字符分组,匹配小括号中的正则表达式,或者指定一个子集的开始和结束位置(该功能主要和\[0-9]使用)。

    eg:re.findall(‘r(ge)g‘,‘fagrgeg5654yg5h54t3‘) #返回结果为ge

    eg:re.findall(‘r(:?ge)g‘,‘fagrgeg5654yg5h54t3‘) #返回结果为rgeg

    eg:re.search(‘r(ge)\1‘,‘fagrgege5654yg5h54t3‘) #返回结果为gege

    eg:ret=re.search(r"-blog-aticles-(?P<year>20[01]\d)-(?P<month>\d+)","-blog-aticles-2015-04")#P是大写的

      print(ret.group("year"))

  10、"x|y"表示匹配正则表达式x或者正则表达式y.一般情况是和小括号连用

    eg:re.findall(‘ac|bc‘,‘abcdefg‘) #返回的结果为bc

    eg:re.findall(‘a(?:b|c)d‘,‘acdbcdefg‘) #返回的结果为acd

  11、" \ "反斜杠在表达式中的作用最为广泛,它既可以将一个普通字符转换为一个特殊字符,也可以把一个特殊字符转换为一个普通字符(相当于解除元字符的特殊功能),如果反斜杠后面跟数字他有两种用法,如果数字为1-99表示引用序号的子字符串所匹配的字符串,如果数字是0开头或者为三位数字(092,123),那么他会把这个三位数字当作一个八进制来看待(主要是把这个八进制转换成ASCII表对应的字符,ASCII编码表共有127个字符)。

    eg:re.findall(‘\d+‘,‘afew3223fef45t‘) #返回结果为3223,45

    eg:re.findall(r‘\\d‘,‘fawef\dfwa‘)  #返回的结果为\\d

    eg:re.search(‘(ge)\1‘,‘fagrgege5654yg5h54t3‘) #返回结果为ge 相当于re.search(‘gege‘,‘fagrgege5654yg5h54t3‘) #返回结果为gege

  注释:\d 匹配任何十进制数; 它相当于类 [0-9]。

       \D 匹配任何非数字字符; 它相当于类 [^0-9]。

       \s 匹配任何空白字符; 它相当于类 [ \t\n\r\f\v]。

     \S 匹配任何非空白字符; 它相当于类 [^ \t\n\r\f\v]。  

     \w 匹配任何字母数字下划线字符; 它相当于类 [a-zA-Z0-9_]。

     \W 匹配任何非字母数字下划线字符; 它相当于类 [^a-zA-Z0-9_]

     \b 匹配一个特殊字符边界,比如空格 ,&,#等

三、正则表达式模块

  1、re模块

    import re

  2、模块的使用方法

    1.re.findall(pattern,string) :该模块是返回所有匹配条件的结果放在一个列表内。

    2.re.search(pattern,string):函数会在字符串中查找模式匹配,直到找到第一个符合匹配的字符串后返回匹配的对象,其返回的结果是对象的内存地址,要想查看其匹配的  对象就必须在返回结果对象的后面加上.group()来调用其字符串,其字符串类型是个str,如果字符串没有被匹配,就返回None。

    3.re.match(pattern,string) :函数会在字符串开头查找,如果匹配成功返回该字符串的内存地址,需要用.group()调用该内存地址,返回str类型的字符串,如果没有匹配成功  则返回Nonetype

    

    

  

  

时间: 2024-10-24 23:14:54

python基础13 ---函数模块3(正则表达式)的相关文章

python基础13 ---函数模块4(configparser模块)

configparser模块 一.configparser模块 1.什么是configparser模块:configparser模块操作配置文件,配置文件的格式与windows ini和linux的cf文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值),其配置文件(INI文件)由节(section).键.值组成. 2.configparser模块简介. ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号"[ ]"内包含的为sect

python基础11 ---函数模块1

函数模块 一.函数模块的作用(为什么要有函数模块) 1.函数模块可以减少代码量 2.函数模块方便阅读 3.函数模块维护性强二.函数模块的本质以及调用方法 1.函数模块的本质就是一个.py结尾的文件,该文件内写入大量函数 2.必须用import来引用函数模块,在调用函数模块时必须以"模块名.函数名"来调用函数模块中的函数. 3.有的时候我们只需要用到模块中的某个函数,也可以用"from 模块名 improt 函数1,函数2"的方式来引用该模块,但只是一次引用,不建议使

python基础14 ---函数模块5(模块和包)

模块与包 一.模块 1.模块是怎么诞生的. 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编写可维护的代码,我们把很多函数分组,分别放到 不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Module). 2.模块的作用. 提高了代码的可维护性.其次是编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候,也经常引用其他模块,

Python基础13 - Paramiko模块学习

@@@文章内容参照老男孩教育 Alex金角大王,武Sir银角大王@@@ 一.Paramiko模块安装 系统环境CentOS 7,Python3.6 1.安装Python3.6 2.yum安装openssl-devel 1 [[email protected] ~]# yum install openssl-devel -y 3.重新编译ssl模块 1 cd Python-3.6.2 2 ./configure --with-ssl 3 make 4 sudo make install 4使用pi

Python基础之re模块(正则表达式)

就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. 字符匹配又分为两种: 一.普通字符: 大多数字符和字母都会和自身进行匹配. import re ret = re.findall("admin","hello administrator") #这是字符串的完整匹配 print(ret) ---------

python基础13函数以及函数式编程

主要内容 函数基本语法及特性 参数与局部变 返回值 4.递归 名函数 6.函数式编程介绍 阶函数 8.内置函数 函数基本语法及特性 定义 数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一 个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变 量,y是x的函数.自变量x的取值范围叫做这个函数的定义域. 但编程中的「函数」概念,与数学中的函数是有很 同的 函数是逻辑结构化和过程化的一种编程方法 函数的优点 减少重复代码 使程序变的可扩展 使程序

python基础31[常用模块介绍]

python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的libraries(modules)如下: 1)python运行时服务 * copy: copy模块提供了对复合(compound)对象(list,tuple,dict,custom class)进行浅拷贝和深拷贝的功能. * pickle: pickle模块被用来序列化python的对象到bytes流,从

python基础及函数1

Python的程序执行方式:Python的程序编辑窗口.Python的解释器提示符. python常量:整形.实型(浮点型).字符串型. Python数据类型:数值类型.字符串类型.布尔类型.复合数据类型 数值类型:整型(0b/0B.0o/0O.0x/0X).浮点型(e/E).复数型 字符串类型:Python标准字符.转义字符.基本字符串函数 布尔类型:true.false 复合数据类型:列表.元组.字典.集合 Python3提供的有效数字精度:17位 字符串分片: >>>str1=&q

python基础——sorted()函数

python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来. Python内置的sorted()函数就可以对list进行排序: >>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36] 此外,sorted()函数也是一个