python 包之 re 正则匹配教程分享

Python 包之 re 正则匹配教程分享

什么是正则表达式(Regular Expression)?

正则表达式是一种用来描述、匹配,甚至替换文本的字符串模式。用于处理字符串文本非常方便和高效,是文本处理中最常用的工具之一。

Python 内置了一个用于正则表达式处理的模块——re。

re 包基础用法

1. 正则表达式的基本语法

在 re 中,正则表达式是由元字符文本字符组成的表达式。

元字符包括(不完全列举):

  • .:匹配任意字符
  • ^:匹配字符串的开头
  • $:匹配字符串的结尾
  • |:匹配任意一个表达式(或)
  • []:匹配括号中的任何一个字符
  • *:匹配前一个字符出现0或多次
  • +:匹配前一个字符出现1或多次
  • ?:匹配前一个字符出现0或1次
  • {m}:匹配前一个字符出现m次
  • {m,n}:匹配前一个字符出现m到n次

文本字符则是指匹配具体文本的字符,比如数字、字母、中文等。

例子:.?码家.{1,2},其中,.表示可匹配任意字符,?表示前面的.字符出现1次或0次,{1,2}表示匹配前面的码家文本字符串中的1个字符或2个字符。

2. re 中函数的使用

re 中常用的函数:

  • re.match(pattern, string[, flags]):在字符串的开头匹配一个模式,如果不匹配则返回 None。
  • re.search(pattern, string[, flags]):扫描整个字符串并返回第一个成功的匹配,如果没有匹配返回 None。
  • re.findall(pattern, string[, flags]):搜索整个字符串,以列表的形式返回所有匹配的子串。
  • re.sub(pattern, repl, string[, count, flags]):使用后置字符串将字符串中所有匹配的子串替换为 repl。

2.1 re.match

re.match() 从字符串的开头开始匹配模式,如果匹配到,则返回一个匹配对象,可以使用 group() 方法获取匹配到的字符串,否则返回 None。

例子:使用 re.match 匹配字符串开头的数字。

import re

s = '007 James Bond'
m = re.match(r'\d+', s)
if m:
    print(m.group())
else:
    print('匹配失败')

输出结果为:007

2.2 re.search

re.search() 从整个字符串里搜索匹配模式,如果匹配到,则返回一个匹配对象,可以使用 group() 方法获取匹配到的字符串,否则返回 None。

例子:使用 re.search 匹配字符串中的数字。

import re

s = '007 James Bond'
m = re.search(r'\d+', s)
if m:
    print(m.group())
else:
    print('匹配失败')

输出结果为:007

2.3 re.findall

re.findall() 从整个字符串里搜匹配模式,返回所有匹配到的子串。

例子:使用 re.findall 匹配字符串中的数字。

import re

s = '007 James Bond'
m = re.findall(r'\d+', s)
if m:
    print(m)
else:
    print('匹配失败')

输出结果为:['007']

2.4 re.sub

re.sub() 将字符串中匹配到的子串用后置字符串进行替换。

例子:使用 re.sub 将字符串中的数字全部替换成 0

import re

s = '007 James Bond'
print(re.sub(r'\d+', '0', s))

输出结果为:000 James Bond

正则表达式实战

1. 匹配手机号码

规则:中国11位手机号码,以1开头,第二位不是0或1,剩下位数是 0~9 的数字。

import re

phone = '13912345678'
pattern = r'^1[^01]\d{9}$'
if re.match(pattern, phone):
    print('匹配成功!')
else:
    print('匹配失败!')

输出结果为:匹配成功!

2. 匹配日期

规则:日期格式为 “XXXX年XX月XX日”,其中,每个 X 可以为数字、字母或汉字。

import re

date = '2022年11月15日'
pattern = r'^[\u4e00-\u9fa5\w]+年[\u4e00-\u9fa5\w]+月[\u4e00-\u9fa5\w]+日$'
if re.match(pattern, date):
    print('匹配成功!')
else:
    print('匹配失败!')

输出结果为:匹配成功!

以上就是本次的正则表达式教程分享,希望对大家能有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 包之 re 正则匹配教程分享 - Python技术站

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

相关文章

  • Python计算三维矢量幅度的方法

    下面是关于“Python计算三维矢量幅度的方法”的完整攻略: 前言 在进行数据分析、数据可视化等工作当中,我们经常会遇到需要计算三维矢量幅度的问题。本文将介绍 Python 中计算三维矢量幅度的方法,以及如何实现。 问题描述 我们需要计算三维矢量 $(x, y, z)$ 的长度,也就是三维矢量的幅度,即 $\sqrt{x^2 + y^2 + z^2}$。 解…

    python 2023年6月3日
    00
  • 详解Linux中文乱码问题终极解决方法

    下面是详细的解析: 一、问题描述及分类 在Linux操作系统中经常会遇到中文乱码的情况,这是因为Linux操作系统默认使用UTF-8编码方式,而中文文本中可能会包含GB2312、BIG5等其他编码方式,因此在进行中文文本的输入、输出以及文件传输过程中,就会出现乱码的情况。 在Linux系统中的中文乱码问题,主要分为以下3种情况: 终端中文乱码:在终端中输入中…

    python 2023年5月20日
    00
  • Python实现推送百度链接的示例代码

    Python实现推送百度链接的示例代码 在本攻略中,我们将介绍如何使用Python推送百度链接,并提供一些示例。 步骤1:获取推送API 在推送百度链接之前,我们需要获取推送API。我们可以使用requests库获取API,也可以使用其他库获取API。 以下是一个示例,用于获取推送API: import requests # 获取推送API response…

    python 2023年5月15日
    00
  • python编程学习np.float 被删除的问题解析

    Python编程学习np.float被删除的问题解析 背景 在numpy 1.20.0的版本中,np.float和np.int等类被删除了,这导致了一些代码在更新后无法正常运行。本文将解释为什么np.float和np.int被删除,以及如何修复代码以适应新版本。 问题解析 为什么np.float被删除? np.float和np.int等类型不是numpy数组…

    python 2023年5月13日
    00
  • python按修改时间顺序排列文件的实例代码

    下面是详细讲解“python按修改时间顺序排列文件的实例代码”的完整攻略。 标题 目录 1. 实现思路 2. 示例说明 2.1 示例1 2.2 示例2 3. 代码实现 1. 实现思路 要实现按日期顺序排序文件,首先需要获取每个文件的修改日期,然后根据日期对文件列表进行排序。具体实现步骤如下: 使用os.listdir()获取目录中所有文件的文件名列表。 使用…

    python 2023年6月2日
    00
  • Python随机生成手机号、数字的方法详解

    你好,关于Python随机生成手机号、数字的方法,可以使用Python的random库来实现。下面是具体的方法步骤: 生成随机手机号 使用Python的random库中的randint方法生成1-9的随机数,然后再用一个循环生成10位数字即可获得一个基本的随机手机号。 import random phone_num = ‘1’ + "".…

    python 2023年6月3日
    00
  • Python 必须了解的5种高级特征

    Python必须了解的5种高级特征攻略 Python是一种优秀的编程语言,非常受欢迎。在学习Python的过程中,了解Python的高级特征是至关重要的。本篇攻略介绍了Python必须了解的5种高级特征。 1. 生成器(Generators) 生成器是一种类似于迭代器的数据类型,可以通过生成器来实现大数据集的迭代,而不必在内存中存储所有数据。生成器使用yie…

    python 2023年5月14日
    00
  • 关于python常见异常以及处理方法

    关于Python常见异常以及处理方法 异常是什么? 在 Python 中,异常是指程序在执行期间产生的事件,影响了程序正常的执行流程。当 Python 发生异常时,程序会停止执行并给出相应的提示信息,通常包含异常类型和异常出现的位置等信息。一般情况下,我们将异常分为两类:内置异常和自定义异常。 Python常见异常 1. NameError 当程序中使用了未…

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