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

yizhihongxing

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数据类型转换的汇总,包括基本类型之间的转换,序列类型之间及其它数据类型之间的转换。 基本数据类型转换 int() 将数字或数字型字符串转换为整数,如果不能转换则会产生ValueError异常。 示例1: num_str = "…

    python 2023年5月13日
    00
  • python 反向输出字符串的方法

    当我们需要将一个字符串反向输出时,可以使用 Python 编程语言提供的方法。以下是 Python 反向输出字符串的方法攻略。 方法一:使用切片操作 使用切片操作可以达到将字符串反转的效果。具体步骤如下: 将字符串转换为列表; 反向遍历列表,将其元素加入一个新的空列表中,最后将其转换为字符串。 示例代码: string = "hello world…

    python 2023年6月5日
    00
  • django使用xlwt导出excel文件实例代码

    以下是详细讲解“django使用xlwt导出excel文件实例代码”的完整实例教程。 1. 环境准备 在使用django导出excel文件之前,需要安装xlwt库,可以通过以下命令进行安装: pip install xlwt 2. 创建视图函数 在django项目的某个应用中创建导出excel文件的视图函数,例如以下代码: import xlwt from …

    python 2023年5月13日
    00
  • python+html实现前后端数据交互界面显示的全过程

    在Python中,可以使用Flask框架和HTML实现前后端数据交互界面显示。以下是详细讲解python+html实现前后端数据交互界面显示的全过程的攻略,包含两个例。 创建Flask应用 在Python中,可以使用Flask框架创建Web应用。以下是一个示例: from flask import Flask, render_template, reques…

    python 2023年5月15日
    00
  • Python面试之os.system()和os.popen()的区别详析

    Python面试之os.system()和os.popen()的区别详析 os.system()和os.popen()是什么? os.system()和os.popen()是Python中的两个内置函数,都用于执行操作系统的命令。 os.system()用于执行简单的命令并返回执行结果的状态码;os.popen()用于执行并返回命令的输出结果。 os.sys…

    python 2023年5月30日
    00
  • Python实现Tab自动补全和历史命令管理的方法

    演示代码可以在这里找到:https://github.com/neal1991/articles/blob/master/python-tab-auto-completion/autocompletion.py,接下来的讲解将以这份代码为例子。 什么是Tab自动补全和历史命令管理 在命令行中,我们经常需要输入很长的命令,会出现拼写错误、错误的命令、或者常见的…

    python 2023年5月19日
    00
  • pandas中df.rename()的具体使用

    首先,df.rename()是pandas中用于重命名DataFrame或Series对象的方法。具体使用方法如下: df.rename(columns={‘old_column_name’: ‘new_column_name’}, inplace=True) 其中,columns参数接受一个字典,键为旧列名,值为新列名。inplace参数表示是否在原Dat…

    python 2023年5月13日
    00
  • 在Python中使用NumPy生成具有给定复数根的切比雪夫级数

    在Python中使用NumPy生成具有给定复数根的切比雪夫级数,需要遵循以下步骤: 第一步:导入必要的库 import numpy as np import matplotlib.pyplot as plt 第二步:定义函数 定义函数,生成切比雪夫级数,并返回其值。 def chebyshev_series(coeffs, x): ""&…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部