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

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

  字符匹配又分为两种:

  一、普通字符:

  大多数字符和字母都会和自身进行匹配。

import re
ret = re.findall("admin","hello administrator") #这是字符串的完整匹配
print(ret)
---------输出结果-----------
[‘admin‘]

  二、元字符:

  元字符符号包括:" . ^ $ * + ? {} [] () \ | "。

  下面我们就来详细看看具体的含义和用法:

  1、元字符之 . ^ $ * + ? {} :

ret = re.findall("a...n","hello administrator") #"."表示所有除\n之外的任何单个字符
print(ret) #-----> [‘admin‘]

ret = re.findall("^h...o","hello administrator") #匹配输入字符串的开始位置
print(ret) #-----> [‘hello‘]

ret = re.findall("r...r$","hello administrator") #匹配输入字符串的结束位置
print(ret) #-----> [‘rator‘]

ret = re.findall("abc*","abccccc") #匹配前面的子表达式零次或多次
print(ret) #-----> [‘abccccc‘]

ret = re.findall("abc+","abccccc") #匹配前面的子表达式一次或多次
print(ret) #-----> [‘abccccc‘]

ret = re.findall("abc?","abccccc") #匹配前面的子表达式零次或一次
print(ret) #-----> [‘abc‘]

ret = re.findall("abc{1,3}","abccccc") #{}自定义c出现的次数
print(ret) #-----> [‘abccc‘]

  注意:前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成非贪婪匹配(惰性匹配)。

ret = re.findall("abc+?","abccccc") #非贪婪匹配
print(ret) #-----> [‘abc‘]
ret = re.findall("abc*?","abcccc") #非贪婪匹配
print(ret) #-----> [‘ab‘]

  2、元字符之字符集[ ] :

ret = re.findall("a[bc]d","abd") #匹配a和d之间有b或者c
print(ret) #-----> [‘abd‘]
ret = re.findall("a[bc]d","acd") #匹配a和d之间有b或者c
print(ret) #-----> [‘acd‘]

ret = re.findall("[a-z]","hello") #匹配a-z之间的所有字母
print(ret) #-----> [‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘]

ret = re.findall("[.*+?]","a.b*c+d?e") #在[ ]‘.*+?‘里没有特殊意义了,就是普通的字符
print(ret) #-----> [‘.‘, ‘*‘, ‘+‘, ‘?‘]
#在字符集里有功能的符号:-(定义一个范围) ^(取反) \(转义)

ret = re.findall("[0-9]","12ab34cd56ef") #取出所有的数字
print(ret) #-----> [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘]

ret = re.findall("[^ab]","12ab34cd56ef") #不取出ab
print(ret) #-----> [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘c‘, ‘d‘, ‘5‘, ‘6‘, ‘e‘, ‘f‘]

ret = re.findall("[\d]","12ab34cd56ef") #相当于[0-9]
print(ret) #-----> [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘]

  3、元字符之转义符 \ :

  反斜杠后边跟元字符去除特殊功能,比如\.,此时.就没有特殊意义了,就是一普通字符。

  反斜杠后边跟普通字符实现特殊功能,详见下文:

    \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  匹配一个特殊字符边界,比如空格 ,&,#等

时间: 2024-08-07 16:45:18

Python基础之re模块(正则表达式)的相关文章

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基础5-常用模块

本节大纲 模块介绍 time &datetime模块 random os sys shutil shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,就是实现某种或者某类功能代码的合集. 类似于函数式编程和面向过程编程,函数式编程完成一个功能,其他代码可以调用,提供了代码的重用性跟代码间的耦合.对于一个复杂的功能,可能需要多个函数才能完成,多个.py文件的代码集合就叫做模块. 如:os是系统相关的模块:f

Day5 - Python基础5 常用模块学习

Python 之路 Day5 - 常用模块学习 本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,

Python 基础之re 模块

Python 基础之大话 re 在使用re模块中主要会用到一下几个方法: re.match() #从头匹配一个字符串 re.search() #浏览全部字符串,匹配第一个符合规则的字符串 re.findall() #将匹配到的所有内容都放在一个列表中 #re.finditer() re.split() re.sub() 好,先简单的介绍一下re 模块中的基础知识: 1.元字符 . ^ $ * + ? {} []  | () \  , 2.\的功能:         #1.反斜杠后面跟元字符去除特

python基础,导入模块,if语句,while语句

python基础 python代码 变为字节码 变为机器码 最后执行执行'文件名.py'文件时出现的'文件名.pyc'文件为字节码 缓存机制 使用pycharm的时候在文件最开始添加下面这两行代码,中文部分为解释#!/user/bin/env python 用执行下面的命令#-*- coding:utf-8 -*- 使用的编码为UTF-8 为了不每次编写文件的时候都需要添加这两行代码,我们可以在pycharm中设置py文件的基础代码,就是创建py文件就会生成的代码 链接 import lib #

2015/9/15 Python基础(12):模块和包

模块是用来组织 Python 代码的方法,而包则是用来组织模块的. 当代码量很大时,我们一般会把代码分成几个有组织的代码段,然后每个代码段之间有一定的联系.代码单之间是共享的,所以Python允许调入一个模块,允许使用其他模块的属性利用之前的工作成果,实现代码重用.那些自我包含并且有组织的代码片段就是模块(module),将其他模块中属性附加到你的模块中的操作较导入(import) 模块是逻辑上的说法,而它们在物理层是一个个独立的文件,模块的文件名就是模块的名字加拓展名.py.与其他可以导入类的

[Python基础]009.os模块(1)

os模块(1) 介绍 os 常量 文件目录操作 文件属性操作 遍历文件夹 介绍 os模块是系统服务应用程序接口,是Python最常用的模块之一. os模块包含了对文件和文件夹的操作,操作系统相关的操作等. 以及os.path模块,主要处理路径操作. os 常量 os.linesep 换行符,Unix为 \n ,Win32为 \r\n os.sep 文件路径分隔符,Unix为 /,Win32为 \ os.pathsep 多个文件路径间的分隔符,Unix为 :,Win32为 ; os.curdir

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

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

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

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

python基础五:模块

模块&包 模块(Module)的概念:在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里的代码会越来越长,维护也越来越不易.为了编写可维护的代码,我们把很多函数分组,分别放在不同的文件里,很多语言都采用这个组织代码的方式,在python中一个.py文件就称之为模块.使用模块的好处:大大提高代码的可维护性.其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块. 所以,模块一共三种: p