Python正则表达式re库的使用

简介: 指导思想:正则表达式只是一个工具,学会其中一种使用方法即可1. ()和re.findall结合使用({}{})中第一个大括号替换为.则表示匹配所有字符,替换为[]则表示匹配中括号内限定的字符;第二个大括号替换为*则表示匹配长度为>=0,替换为+则表示匹配长度为>=1,替换为空则表示匹配长度为1(.*)表示匹配任意长度的所有字符([0-9]*)表示匹配任意长度的数字([0-9,a-z])表示匹配长度为1的数字和小写字母re.findall函数需要传入2个参数,第1个参数是正则表达式,第2个参数是要进行搜索的源字符串。

指导思想:正则表达式只是一个工具,学会其中一种使用方法即可

1. ()和re.findall结合使用

({}{})中第一个大括号替换为.则表示匹配所有字符,替换为[]则表示匹配中括号内限定的字符;
第二个大括号替换为*则表示匹配长度为>=0,替换为+则表示匹配长度为>=1,替换为空则表示匹配长度为1
(.*)表示匹配任意长度的所有字符
([0-9]*)表示匹配任意长度的数字
([0-9,a-z])表示匹配长度为1的数字和小写字母
re.findall函数需要传入2个参数,第1个参数是正则表达式,第2个参数是要进行搜索的源字符串。
re.findall函数返回结果的数据类型为列表,列表中的第1个元素的数据类型为元祖。

示例代码如下:

import re

if __name__ == "__main__":
    sourceStr = "11房5厅8卫"
    sourceStr2 = "a房b厅3卫"
    pattern_all = "(.*)房(.*)厅(.*)卫"
    pattern_number = "([0-9]*)房([0-9]*)厅([0-9]*)卫"
    pattern_numberAndLetter = "([0-9,a-z])房([0-9,a-z])厅([0-9,a-z])卫"
    print("正则表达式找出中间的字符:")
    result = re.findall(pattern_all, sourceStr)
    print(result,type(result),type(result[0]))
    print(re.findall(pattern_all,sourceStr2))
    print("正则表达式找出中间的数字")
    print(re.findall(pattern_number,sourceStr))
    print(re.findall(pattern_number,sourceStr2))
    print("正则表达式找出中间的数字和字母")
    print(re.findall(pattern_numberAndLetter, sourceStr))
    print(re.findall(pattern_numberAndLetter, sourceStr2))

上面一段代码的运行结果如下:

正则表达式找出中间的字符:
[('11', '5', '8')] <class 'list'> <class 'tuple'>
[('a', 'b', '3')]
正则表达式找出中间的数字
[('11', '5', '8')]
[]
正则表达式找出中间的数字和字母
[('1', '5', '8')]
[('a', 'b', '3')]

2. 正则表达式中的元字符

\s 用于匹配单个空格符,包括tab键和换行符; 
\S 用于匹配除单个空格符之外的所有字符; 
\d 用于匹配从0到9的数字; 
\w 用于匹配字母,数字或下划线字符; 
\W 用于匹配所有与\w不匹配的字符; 
.  用于匹配除换行符之外的所有字符。
例如上一节中的([0-9]*)与([\d]*)作用相同

3. ()和re.search结合使用

re.search函数需要传入2个参数,第1个参数是正则表达式,第2个参数是要进行搜索的源字符串。
re.search函数返回结果的数据类型是sre.SRE_Match对象,span=(3,9)是匹配结果的索引,从索引3开始,不包括索引9。
把re.search函数返回结果赋值给result,通过result.group函数获取匹配结果,result.group函数需要传入1个参数,参数的数据类型为无符号整型,参数为0时,为正则表达式匹配到的长句内容;参数为1时,为正则表达式匹配到的第1个小括号中的内容;参数为2时,为正则表达式匹配到的第2个小括号中的内容,依此类推。
示例代码如下:

import re

if __name__ == "__main__":
    sourceStr = "户型:3室2厅2卫"
    pattern_all = "([\d]*)室(.)厅(.)卫"
    result = re.search(pattern_all,sourceStr)
    print(result)
    print(result.group(0))
    print(result.group(1))
    print(result.group(2))
    print(result.group(3))

上面一段代码的运行结果如下:

<_sre.SRE_Match object; span=(3, 9), match='3室2厅2卫'>
3室2厅2卫
3
2
2

4 re.match的使用

re,match在实际应用中很少,不建议使用。
re.match能够匹配的前提是必须字符串索引0的位置能够匹配到。

import re
if __name__ == "__main__":
    re1 = "hel."
    re2 = ".el"
    re3 = ".hel"
    re4 = "el"
    sourceStr = "hello"
    print(re.match(re1,sourceStr))
    print(re.match(re2,sourceStr))
    print(re.match(re3,sourceStr))
    print(re.match(re3,sourceStr))

上面一段代码的运行结果如下:

<_sre.SRE_Match object; span=(0, 4), match='hell'>
<_sre.SRE_Match object; span=(0, 3), match='hel'>
None
None

目录
相关文章
|
9天前
|
XML 存储 数据库
Python中的xmltodict库
xmltodict是Python中用于处理XML数据的强大库,可将XML数据与Python字典相互转换,适用于Web服务、配置文件读取及数据转换等场景。通过`parse`和`unparse`函数,轻松实现XML与字典间的转换,支持复杂结构和属性处理,并能有效管理错误。此外,还提供了实战案例,展示如何从XML配置文件中读取数据库连接信息并使用。
Python中的xmltodict库
|
13天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
34 5
|
17天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
51 4
|
17天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
25 2
|
15天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
6天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
12天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
12天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
12天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
下一篇
无影云桌面