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 编程之旅中,轻松驾驭正则表达式,解决各类字符串处理问题。

相关文章
|
11天前
|
分布式计算 大数据 数据处理
Python入门与大数据处理环境配置指南
**Python入门与大数据处理环境配置** Python作为高级编程语言,因其简洁语法和丰富库资源,成为数据处理、AI和大数据分析首选。本文旨在介绍Python基础和环境配置,特别是针对大数据处理的环境搭建。首先,讲解Python语言基础,包括语言概述、基本语法(变量、数据类型、控制流语句、函数和模块)。接着,讨论如何安装Python环境,以及安装NumPy、Pandas等大数据处理库。对于大数据处理,可以选择本地环境或搭建分布式环境,如Hadoop和Spark,并提供相关API示例。最后,列出环境配置中可能遇到的问题及解决方案,如版本不兼容、库安装失败等,并提供参考资料以供深入学习。
28 3
|
1天前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
|
1天前
|
安全 算法 Python
Python高级语法与正则表达式(一)
Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。
|
9天前
|
IDE 开发工具 Python
Python初学者如何入门?
【6月更文挑战第14天】Python初学者如何入门?
17 5
|
11天前
|
开发者 Python
入门实战丨Python小游戏经典案例
入门实战丨Python小游戏经典案例
19 4
|
9天前
|
开发者 Python
GitHub飙升!京东认证的“Python编程入门三剑客”究竟好在哪?
Python凭借着简单易学、功能强大,已经跃居TIOB编程语言榜首,并且已经开始了它的霸榜之旅。如何选择一套适合自己的Python学习教程,是每个Python爱好者面临的首要问题。
|
10天前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。
|
10天前
|
机器学习/深度学习 算法 数据挖掘
机器学习新手也能飞:Python+Scikit-learn让你轻松入门!
【6月更文挑战第12天】Python和Scikit-learn降低了机器学习的门槛,让初学者也能轻松涉足。Python以其易用性及丰富的库支持成为机器学习首选语言,而Scikit-learn作为开源机器学习库,提供多种算法和工具。通过简单示例展示了如何使用两者处理鸢尾花数据集进行分类,体现其在实践中的高效便捷。掌握这两者,能助你在机器学习领域不断探索和创新。
|
2天前
|
算法 Python
Python 基础入门
Python 基础入门
|
3天前
|
Python
python正则表达式入门
python正则表达式入门