python re正则表达式模块(Regular Expression)

下面是Python的正则表达式模块re的完整攻略。

简介

Python的re(Regular Expression)模块提供了正则表达式操作的功能。正则表达式是一种处理字符串的方式,它可以用于搜索、替换和分割字符串。正则表达式是由普通字符和特殊字符组成的模式,匹配模式所定义的字符串。Python的re模块提供了处理正则表达式的功能,能够方便地实现字符串的匹配、搜索、替换和分割操作。

基本用法

Python的re模块主要包含以下常用方法:

re.search(pattern, string, flags=0)
re.match(pattern, string, flags=0)
re.findall(pattern, string, flags=0)
re.sub(pattern, repl, string)
re.split(pattern, string, maxsplit=0, flags=0)

其中,re.search()函数在字符串中搜索匹配正则表达式的第一个位置,并返回相应的匹配对象;re.match()则尝试从字符串的开头开始匹配正则表达式,并返回相应的匹配对象;re.findall()在字符串中查找所有匹配正则表达式的字符串,并返回一个列表;re.sub()用指定的字符串替换字符串中所有匹配正则表达式的子串;re.split()根据正则表达式分割字符串,并将分割完毕的字符串存入列表中返回。

这些函数在使用时需要传入一个正则表达式作为pattern参数。

语法

正则表达式由普通字符和特殊字符组成,其中特殊字符具有一定的含义。使用正则表达式时需要熟悉这些特殊字符的含义。

普通字符

普通字符是指除了特殊字符之外的所有字符,包括大小写字母、数字、标点符号和空格等。普通字符在正则表达式中的匹配和它们在字符串中的出现一致。

例如,若使用正则表达式abc,则会匹配所有包含连续字母abc的字符串,如abcabcdaabcaabbc等。

特殊字符

特殊字符在正则表达式中具有特殊的意义,它们可以用来匹配特定的字符类、字符重复、位置标记等内容。

常见的特殊字符包括:

  • 字符类:用于匹配一组字符中的任意一个字符。
  • [...]表示匹配其中任意一个字符。例如,[abc]可以匹配字符a、b或c;
  • [^...]表示匹配其中任意一个不是字符组中所列字符的字符。例如,[^abc]可以匹配任意一个不是字符a、b或c的字符;
  • \d可以匹配任何数字(0-9);
  • \D可以匹配任何非数字字符;
  • \w可以匹配任何字母、数字或下划线字符;
  • \W可以匹配任何非字母、数字或下划线字符;
  • \s可以匹配任何空白字符(包括空格、制表符、换行符等);
  • \S可以匹配任何非空白字符。
  • 字符重复:用于匹配字符重复出现的数量。
  • *表示前面的字符可以出现0次或任意多次;
  • +表示前面的字符可以出现1次或任意多次;
  • ?表示前面的字符可以出现0次或1次;
  • {m}表示前面的字符必须出现m次;
  • {m, n}表示前面的字符必须出现m到n次。
  • 位置标记:用于指定匹配字符的位置。
  • ^表示从行首开始匹配;
  • $表示从行尾开始匹配;
  • \b表示匹配单词边界;
  • \B表示匹配非单词边界。

示例

下面给出两个正则表达式的示例。

示例1:匹配网址

我们可以针对一些格式化明确的字符串,使用正则表达式来进行分析和抓取。比如我们可以构造一个正则表达式来匹配URL地址:

import re

# 定义正则表达式
pattern = r'^https?://[\w\.-]+/\S*$'

# 测试字符串
test_str1 = 'https://www.baidu.com/index.html'
test_str2 = 'http://www.example.com/path/to/page'

# 进行匹配
if re.match(pattern, test_str1):
    print(f"{test_str1}匹配成功")
else:
    print(f"{test_str1}匹配失败")

if re.match(pattern, test_str2):
    print(f"{test_str2}匹配成功")
else:
    print(f"{test_str2}匹配失败")

首先我们使用 ^ 表示行首开始匹配,然后使用 https?:// 匹配以 http://https:// 开头的网址。接着使用 [\w\.-]+ 匹配网址中的主机名。\w 表示匹配任何字母、数字或下划线字符,点和减号表示主机名可以包含点和减号。最后使用 /\S*$ 匹配网址中的路径和查询字符串。\S* 匹配任何非空白字符,$ 表示从行尾开始匹配。

测试字符串 test_str1test_str2 分别符合和不符合正则表达式的规则,通过 re.match() 函数可以判断是否匹配成功。

示例2:数量匹配

正则表达式中的重复字符可以指定要匹配的字符数量,例如:

import re

# 定义正则表达式
pattern = r'Python\s+rocks!'

# 测试字符串
test_str1 = 'Python      rocks!'
test_str2 = 'Python rocks!'

# 进行匹配
if re.search(pattern, test_str1):
    print(f"{test_str1}匹配成功")
else:
    print(f"{test_str1}匹配失败")

if re.search(pattern, test_str2):
    print(f"{test_str2}匹配成功")
else:
    print(f"{test_str2}匹配失败")

在正则表达式 Python\s+rocks! 中,\s+ 表示匹配一个或多个空格字符。

测试字符串 test_str1 中有多个空格符,匹配成功;而 test_str2 中只有一个空格符,匹配失败。

总结

Python的re模块提供了强大的正则表达式操作功能,通过学习正则表达式的语法和常用方法,我们可以更好地进行字符串匹配、搜索、替换和分割等操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python re正则表达式模块(Regular Expression) - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • AUC计算方法与Python实现代码

    AUC计算方法与Python实现代码 AUC(Area Under Curve)是一种常用的分类模型评价指标,它可以用于评估分类模型的性能。在本文中我们将详细介绍AUC的计算方法,并提供两个示例,以说明如何使用Python实现AUC的计算。 AUC计算方法 AUC是ROC曲线的面积,ROC曲线是一种用于评估二分类模型性能的曲线。ROC曲的横轴是假正率(Fal…

    python 2023年5月14日
    00
  • Python实现OCR识别之pytesseract案例详解

    Python实现OCR识别之pytesseract案例详解 介绍 在处理图像识别的过程中,主要需要完成以下的任务: 去除图像中的背景噪音 将图像转化为黑白图像 图像分割 字符识别 本文介绍了利用Python语言中的tesseract库来进行OCR识别的详细攻略。 安装 需要先安装tesseract库和pytesseract库。 安装tesseract库 su…

    python 2023年5月18日
    00
  • Python登录并获取CSDN博客所有文章列表代码实例

    Python登录并获取CSDN博客所有文章列表代码实例 在本攻略中,我们将介绍如何使用Python登录CSDN博客并获取所有文章列表。我们将使用requests库和BeautifulSoup库来实现这个过程。 步骤1:登录CSDN博客 使用以下代码可以登录CSDN博客: import requests login_url = ‘https://passpor…

    python 2023年5月15日
    00
  • 用代码帮你了解Python基础(3)

    让我详细讲解一下“用代码帮你了解Python基础(3)” 的完整攻略。 概述 本文将会介绍Python中常见的数据结构,包括列表(List)、元组(Tuple)、集合(Set)以及字典(Dictionary)。 这些数据结构是Python中使用频率极高的基础数据类型,熟练的使用它们能够提高我们的编程效率和代码质量。因此,在本文中,我们将通过一些示例来演示如何…

    python 2023年5月14日
    00
  • Python基于Opencv识别两张相似图片

    下面是Python基于OpenCV识别两张相似图片的完整攻略: 1. 安装依赖库 首先,我们需要安装OpenCV库和Python中的图片处理库Pillow(PIL): pip install opencv-python Pillow 2. 读取图片数据 我们可以使用OpenCV读取图片数据: import cv2 img1 = cv2.imread(‘ima…

    python 2023年5月18日
    00
  • Python处理键映射值操作详解

    Python处理键映射值操作详解 在Python编程中,字典(dictionary)是一种常用的数据类型,它是一个无序的键(key)和值(value)的集合,使用键来取出对应的值。在字典中,键必须是唯一的,而值则是可以重复的。本文将详细介绍Python中字典的键映射值操作。 字典的定义与创建 在Python中,可以使用两种方式来定义字典: 使用花括号{}来创…

    python 2023年5月13日
    00
  • 基于Python2、Python3中reload()的不同用法介绍

    基于Python2、Python3中reload()的不同用法介绍 Python 2 在Python2中,使用reload()来重新加载模块会非常方便。具体的语法如下: reload(module) 其中,module是你想要重新加载的模块对象。 示例1: import my_module # 在这里对my_module进行一些修改 reload(my_mo…

    python 2023年6月2日
    00
  • Python 脚本的三种执行方式小结

    下面是详细讲解“Python 脚本的三种执行方式小结”的攻略。 Python 脚本的三种执行方式 在使用 Python 编写脚本时,可以通过以下三种方式执行脚本: 直接运行脚本文件 通过解释器执行脚本文件 将脚本文件作为模块导入并调用 下面分别进行详细讲解。 直接运行脚本文件 直接运行脚本文件是最简单的执行方式。只需要在终端中输入以下命令即可运行脚本文件: …

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部