Python新手必看:正则表达式入门到精通只需这一篇!

简介: 了解 Python 中的正则表达式,用于高效处理字符串。导入 `re` 模块,用 `r` 前缀避免转义困扰。示例:`re.split` 切分字符串,`re.findall` 进行匹配与查找,数量词如 `*`, `+`, `?` 控制匹配次数,边界匹配定位开始或结束。使用 `group` 和 `sub` 进行组合操作,解决复杂文本处理问题。正则表达式是字符串处理的利器,助你轻松应对各种场景。

在编程世界里,处理字符串是一项基本而又常见的任务。无论是数据清洗、日志分析,还是文本处理,我们都可能会遇到需要从一大堆文本中提取出我们需要的信息的场景。

这时候,正则表达式(Regular Expression)就成为了我们强大的工具。Python 作为一门功能丰富的编程语言,自然也提供了对正则表达式的强力支持。

今天,就让我们一起来学习如何在 Python 中使用正则表达式,轻松搞定字符串处理任务。

正则表达式初探

在 Python 中使用正则表达式之前,我们首先需要引入 re 模块。

import re

由于 Python 字符串和正则表达式都使用 \ 作为转义符,这有时会造成混淆。例如,当我们需要匹配字符 ABC\-001 时:

s = 'ABC\\-001' # 这里要注意 Python 字符串的转义

为了避免转义带来的麻烦,我们推荐使用 Python 的 r 前缀,这样字符串内部的表达式会被直接处理,不需要考虑转义的问题:

s = r'ABC\-001' # 使用 r 前缀,更直观

常用操作实例

以下是使用正则表达式进行常见字符串操作的一些实例。

切分字符串

利用正则表达式可以非常灵活地切分字符串。

r = re.split(r'[\s\,\;]+', 'a,b;; c  d')
print(r)  # 输出:['a', 'b', 'c', 'd']

匹配与查找

  • 匹配普通字符:直接将字符本身作为匹配模式。
a = 'c++|c#|php|python|java|javascript'
r = re.findall('Python', a)
print(r)  # 输出:[]
  • 匹配数字和非数字字符
# 匹配数字和非数字字符
r = re.findall('\d', a)   # 数字
r = re.findall('\D', a)   # 非数字
  • 匹配字符集:可匹配指定范围内的字符。
s = 'abc, acc, adc, aec, afc, ahc'
r = re.findall('a[cf]c', s)  # 匹配 'acc', 'afc'
res = re.findall('a[^cf]c', s)  # 排除 'acc', 'afc'
result = re.findall('a[c-f]c', s)  # 匹配 'acc', 'adc', 'aec', 'afc'

使用数量词

正则表达式通过数量词来指定字符出现的次数,包括贪婪模式和非贪婪模式。

s = 'python46546java&79879php'

# 默认贪婪模式
r1 = re.findall('[a-z]{3,6}', s) 

# 非贪婪模式
r2 = re.findall('[a-z]{3,6}?', s)

print(r1)  # 输出:['python', 'java', 'php']
print(r2)  # 输出:['pyt', 'hon', 'jav', 'php']

量词的使用:*,+,?

  • * 表示匹配前面的字符0次或多次。
  • + 表示匹配前面的字符1次或多次。
  • ? 表示匹配前面的字符0次或1次。
s = 'pytho0python1pythonn2'
r1 = re.findall('python*', s)  # 匹配 'python' 0次或多次
r2 = re.findall('python+', s)  # 匹配 'python' 1次或多次
r3 = re.findall('python?', s)  # 匹配 'python' 0次或1次

使用边界匹配

边界匹配可以帮助我们匹配字符串的开始或结束位置。

s = '10000146'
r1 = re.findall('^00000', s)  # 查找开头为 00000 的字符串
r2 = re.findall('00000$', s)  # 查找结尾为 00000 的字符串

进阶技巧

组合使用 groupsub

使用组(Group)提取数据,结合 sub 进行字符串的替换和处理,可以实现复杂的文本处理逻辑。

s = 'A8C34DD64GT79UI79D759'
def convert(value):
    matched = value.group()
    return '9' if int(matched) >= 6 else '0'
r = re.sub('\d', convert, s)

使用 group 提取数据

对于复杂的匹配需求,group 可以帮助我们提取感兴趣的数据。

s = 'life is short , i use python'
r1 = re.search('life(.*)python', s)
print(r1.group(1))  # 输出:' is short , i use '

通过上面的示例,我们不难看出,正则表达式是处理文本字符串的强大工具。

希望本文能帮助你在 Python 编程之旅中,轻松驾驭正则表达式,解决各类字符串处理问题。

相关文章
|
25天前
|
数据采集 监控 数据安全/隐私保护
Python正则表达式:用"模式密码"解锁复杂字符串
正则表达式是处理字符串的强大工具,本文以Python的`re`模块为核心,详细解析其原理与应用。从基础语法如字符类、量词到进阶技巧如贪婪匹配与预定义字符集,结合日志分析、数据清洗及网络爬虫等实战场景,展示正则表达式的强大功能。同时探讨性能优化策略(如预编译)和常见错误解决方案,帮助开发者高效掌握这一“瑞士军刀”。最后提醒,合理使用正则表达式,避免过度复杂化,追求简洁优雅的代码风格。
48 0
|
3月前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
3月前
|
机器学习/深度学习 人工智能 算法框架/工具
Python入门:1.Python介绍
Python是一种功能强大、易于学习和运行的解释型高级语言。由**Guido van Rossum**于1991年创建,Python以其简洁、易读和十分工程化的设计而带来了庞大的用户群体和丰富的应用场景。这个语言在全球范围内都被认为是**创新和效率的重要工具**。
Python入门:1.Python介绍
|
11天前
|
数据管理 开发者 Python
揭秘Python的__init__.py:从入门到精通的包管理艺术
__init__.py是Python包管理中的核心文件,既是包的身份标识,也是模块化设计的关键。本文从其历史演进、核心功能(如初始化、模块曝光控制和延迟加载)、高级应用场景(如兼容性适配、类型提示和插件架构)到最佳实践与常见陷阱,全面解析了__init__.py的作用与使用技巧。通过合理设计,开发者可构建优雅高效的包结构,助力Python代码质量提升。
61 10
|
5月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
数据采集 数据可视化 大数据
Python入门修炼:开启你在大数据世界的第一个脚本
Python入门修炼:开启你在大数据世界的第一个脚本
77 6
|
1月前
|
数据可视化 流计算 Python
Python创意爱心代码大全:从入门到高级的7种实现方式
本文分享了7种用Python实现爱心效果的方法,从简单的字符画到复杂的3D动画,涵盖多种技术和库。内容包括:基础字符爱心(一行代码实现)、Turtle动态绘图、Matplotlib数学函数绘图、3D旋转爱心、Pygame跳动动画、ASCII艺术终端显示以及Tkinter交互式GUI应用。每种方法各具特色,适合不同技术水平的读者学习和实践,是表达创意与心意的绝佳工具。
643 0
|
3月前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
3月前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
3月前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数