Python
  • 为什么学Python?
  • Python代码规范
    • 简明概述
    • 注释
    • 命名规范
  • 第一个Python程序
    • Python 简介
    • Python 的安装
    • 第一个 Python 程序
    • 集成开发环境(IDE): PyCharm
  • 基本数据类型和变量
    • Python 语法的简要说明
    • print() 函数
    • Python 的基本数据类型
    • 字符串的编码问题
    • 基本数据类型转换
    • Python 中的变量
  • List 和 Tuple
    • List(列表)
    • tuple(元组)
  • Dict 和 Set
    • 字典(Dictionary)
    • set
  • 条件语句和循环语句
    • 条件语句
    • 循环语句
    • 条件语句和循环语句综合实例
  • 函数
    • Python 自定义函数的基本步骤
    • 函数返回值
    • 函数的参数
    • 函数传值问题
    • 匿名函数
  • 迭代器和生成器
    • 迭代
    • Python 迭代器
    • lsit 生成式(列表生成式)
    • 生成器
    • 迭代器和生成器综合例子
  • 面向对象
    • 面向对象的概念
    • 类的定义和调用
    • 类方法
    • 修改和增加类属性
    • 类和对象
    • 初始化函数
    • 类的继承
    • 类的多态
    • 类的访问控制
  • 模块与包
    • Python 模块简介
    • 模块的使用
    • 主模块和非主模块
    • 包
    • 作用域
  • Python 的 Magic Method
    • Python 的 Magic Method
    • 构造(__new__)和初始化(__init__)
    • 属性的访问控制
    • 对象的描述器
    • 自定义容器(Container)
    • 运算符相关的魔术方法
  • 枚举类
    • 枚举类的使用
    • Enum 的源码
    • 自定义类型的枚举
    • 枚举的比较
  • 元类
    • Python 中类也是对象
    • 使用 type() 动态创建类
    • 什么是元类
    • 自定义元类
    • 使用元类
  • 线程与进程
    • 线程与进程
    • 多线程编程
    • 进程
  • 一步一步了解正则表达式
    • 初识 Python 正则表达式
    • 字符集
    • 数量词
    • 边界匹配符和组
    • re.sub
    • re.match 和 re.search
  • 闭包
  • 装饰器
  • 知识点补漏
    • Python 关键字 yield
  • Python 进阶部分
  • 使用Python虚拟环境
  • Mac中使用virtualenv和virtualenvwrapper
  • Django
Powered by GitBook
On this page
  1. 一步一步了解正则表达式

初识 Python 正则表达式

正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。

Python 自 1.5 版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。

下面通过实例,一步一步来初步认识正则表达式。

比如在一段字符串中寻找是否含有某个字符或某些字符,通常我们使用内置函数来实现,如下:

# 设定一个常量
a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU'

# 判断是否有 “两点水” 这个字符串,使用 PY 自带函数

print('是否含有“两点水”这个字符串:{0}'.format(a.index('两点水') > -1))
print('是否含有“两点水”这个字符串:{0}'.format('两点水' in a))

输出的结果如下:

是否含有“两点水”这个字符串:True
是否含有“两点水”这个字符串:True

那么,如果使用正则表达式呢?

刚刚提到过,Python 给我们提供了 re 模块来实现正则表达式的所有功能,那么我们先使用其中的一个函数:

re.findall(pattern, string[, flags])

该函数实现了在字符串中找到正则表达式所匹配的所有子串,并组成一个列表返回,具体操作如下:


import re

# 设定一个常量
a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU'

# 正则表达式

findall = re.findall('两点水', a)
print(findall)

if len(findall) > 0:
    print('a 含有“两点水”这个字符串')
else:
    print('a 不含有“两点水”这个字符串')

输出的结果:

['两点水']
a 含有“两点水”这个字符串

从输出结果可以看到,可以实现和内置函数一样的功能,可是在这里也要强调一点,上面这个例子只是方便我们理解正则表达式,这个正则表达式的写法是毫无意义的。为什么这样说呢?

因为用 Python 自带函数就能解决的问题,我们就没必要使用正则表达式了,这样做多此一举。而且上面例子中的正则表达式设置成为了一个常量,并不是一个正则表达式的规则,正则表达式的灵魂在于规则,所以这样做意义不大。

那么正则表达式的规则怎么写呢?先不急,我们一步一步来,先来一个简单的,找出字符串中的所有小写字母。首先我们在 findall 函数中第一个参数写正则表达式的规则,其中 [a-z] 就是匹配任何小写字母,第二个参数只要填写要匹配的字符串就行了。具体如下:


import re

# 设定一个常量
a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU'

# 选择 a 里面的所有小写英文字母

re_findall = re.findall('[a-z]', a)

print(re_findall)

输出的结果:

['t', 'w', 'o', 'w', 'a', 't', 'e', 'r', 'l', 'i', 'a', 'n', 'g', 'd', 'i', 'a', 'n', 's', 'h', 'u', 'i', 'e', 'a', 'd', 'i', 'n', 'g', 'i', 't', 'h']

这样我们就拿到了字符串中的所有小写字母了。

Previous一步一步了解正则表达式Next字符集

Last updated 1 month ago