python 正则表达式 概述及常用字符

下面我将详细讲解Python正则表达式的概述及常用字符,以及两个具体的示例说明。

Python正则表达式概述

正则表达式(Regular Expression)是一种高效的文本处理工具,常用于文本匹配、提取、替换等操作。Python通过内置的re模块支持正则表达式操作。在正则表达式中,由特定字符和符号组成的匹配规则,被称为正则表达式的模式。

常用字符

普通字符

普通的字符(a、b、c等)表示匹配该字符本身。

特殊字符

下面是一些Shell中常涉及到的一些特殊字符:

  • . 匹配任意单个字符,换行符除外。
  • \d 匹配任意一个数字
  • \D 匹配任意一个非数字
  • \w 匹配任意一个单词字符,包括字母、数字、下划线等。
  • \W 匹配任意一个非单词字符。
  • \s 匹配任意一个空白字符,包括空格、制表符、换行符等。
  • \S 匹配任意一个非空白字符。
  • \t 匹配一个制表符。
  • \n 匹配一个换行符。
  • \r 匹配一个回车符。
  • ^ 匹配行首。
  • $ 匹配行尾。
  • [] 匹配中括号中出现的任意一个字符,比如[abc]匹配a、b、c中的任意一个字符。
  • [^] 匹配中括号中没有出现的任意一个字符,比如[^abc]匹配非a、b、c中的任意一个字符。
  • [^]也可以表示取反,比如[^0-9]表示匹配所有不是数字的字符
  • * 匹配前面的字符出现0次或多次。比如ab*匹配一个或多个b的字符串,abbbbbb、ab皆匹配。
  • + 匹配前面的字符出现1次或多次。比如ab+匹配一个或多个b的字符串,a不匹配,ab、abbbbbb匹配。
  • ? 匹配前面的字符出现0次或1次。比如ab?匹配0个或1个b,即a或ab。
  • {} 匹配前面字符出现的次数。比如a{3}匹配3个a,a{3,5}匹配3个到5个a。
  • | 匹配左侧或右侧的字符。比如a|b匹配a或b。

元字符

元字符是指一些特殊的字符,需要在前面加上“\”才能表示其本身含义。一些常见的元字符包括:

  • . 匹配任意单个字符。
  • [ ] 匹配中括号中出现的任意一个字符,比如[a-z]匹配任意一个小写字母。
  • [^] 匹配中括号中没有出现的任意一个字符,比如[^abc]匹配非a、b、c中的任意一个字符。
  • + 匹配前面的字符出现1次或多次。
  • * 匹配前面的字符出现0次或多次。
  • ? 匹配前面的字符出现0次或1次。
  • {n,m} 匹配前面字符出现的次数,n表示最少出现的次数,m表示最多出现的次数。
  • ** 表示转义字符,让字符本身失去它原来的意义,变成一个普通字符。比如\b表示一个退格符,\t表示一个制表符,\n表示一个换行符。

示例说明

示例1:验证手机号格式是否正确

我们使用正则表达式来验证一个手机号的格式是否符合要求。手机号的格式为:以数字1开头,紧接着第二位为3、4、5、7或8,再后面的9位数字可以为0-9中的任意一个数字。

验证代码如下:

import re

def checkPhone(phone):
    if len(phone)!=11:
        print('手机号长度不对')
        return False
    matchObj = re.match(r'^1[34578]\d{9}$',phone)
    if matchObj == None:
        print('手机号格式不正确')
        return False
    else:
        return True

#测试:
print(checkPhone('13888888888'))  #True
print(checkPhone('13288888888'))  #True
print(checkPhone('1388888888'))   #False,长度不对
print(checkPhone('1388888888a'))  #False,格式不对

上述代码中,我们先判断手机号的长度是否正确,然后使用正则表达式r'^1[34578]\d{9}$'来判断手机号的格式是否正确。其中^表示开头,$表示结尾,后面的“1[34578]\d{9}”表示必须以数字1开头,紧接着的第二位只能为3、4、5、7或8,后面的9位可以是任意一个数字。如果匹配到了符合条件的模式,则返回True,否则返回False。

示例2:从HTML中提取链接

我们使用正则表达式来从HTML页面中提取所有的链接。HTML页面中的链接一般都是以标签包含,而标签中的href属性就是链接地址。

提取代码如下:

import re

def extractLinks(htmlStr):
    linkPattern = re.compile(r'<a.+?href="(.+?)"')
    links = linkPattern.findall(htmlStr)
    return links

#测试:
htmlStr = '<html><body><a href="http://www.baidu.com">百度一下,你就知道</a><a href="http://www.sohu.com">搜狐首页</a></body></html>'
print(extractLinks(htmlStr)) #['http://www.baidu.com', 'http://www.sohu.com']Y

上述代码中,我们定义了一个名为linkPattern的正则表达式对象,使用了正则表达式r'<a.+?href="(.+?)"'来提取链接地址。其中<a.+?>表示匹配标签,.+?表示匹配任意一个字符+重复0次或多次,使用问号表示非贪婪模式,href="(.+?)"表示匹配href属性的值。最后使用findall方法返回所有匹配到的链接地址。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 正则表达式 概述及常用字符 - Python技术站

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

相关文章

  • Python基础之矩阵输入的实例

    下面我将为你详细讲解“Python基础之矩阵输入的实例”的完整攻略,包括如何在 Python 中输入矩阵、如何计算矩阵的加减乘除等基本操作。 如何在 Python 中输入矩阵 Python 中可以使用numpy库来进行矩阵的输入输出,下面是numpy库中创建矩阵的方法: import numpy as np # 创建一个2 * 3的矩阵 m = np.arr…

    python 2023年6月6日
    00
  • 详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决

    针对“详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决”,我为你准备了以下的攻略: 一、问题描述 在使用 Python 3.x 版本时,安装了 Pillow 模块后,在导入该模块时却报错:没有 pillow 模块或者没有 PIL 模块。这个问题的出现是因为在 Pillow 6.0 版本里,Pillow 不再包含 PIL …

    python 2023年5月13日
    00
  • PyCharm 常用快捷键和设置方法

    PyCharm 常用快捷键和设置方法攻略 1. 快捷键 PyCharm 是一款强大的 Python 集成开发环境,以下是一些常用的 PyCharm 快捷键: Ctrl + Shift + A:查找并执行操作 Ctrl + Alt + L:格式化代码 Ctrl + Alt + T:环绕选中代码块 Ctrl + Alt + O:优化导入 Ctrl + Q:查看函…

    python 2023年5月18日
    00
  • Python defaultdict方法使用分析

    Python defaultdict方法使用分析 在 Python 的 collections 模块中,提供了一个名为 defaultdict 的字典类,它是 Python 标准字典(dict)的子类,能够为字典提供一些额外的API和特殊的行为。在本文中,我们将讨论 defaultdict 是什么,以及它与标准字典的区别,在哪些场景下需要使用 default…

    python 2023年6月3日
    00
  • Python 网页请求之requests库的使用详解

    以下是关于Python网页请求之requests库的使用详解的攻略: Python网页请求之requests库的使用详解 requests是一个流行的HTTP库,用于向Web服务器发送HTTP请求和接收响应。以下是Python网页请求之requests库的使用详解的攻略: 发送GET请求 以下是使用requests库发送GET请求的示例: import re…

    python 2023年5月14日
    00
  • Python中的字符串相似度

    以下是Python中的字符串相似度的完整攻略: 1. 字符串相似度的定义 字符串相似度指的是两个字符串之间的相似程度。在实际应用中,常常需要对两个字符串进行比较,以确定它们的相似程度。字符串相似度是利用算法对两个字符串进行处理,得出它们之间的相似程度,一般用数值表示。 2. 字符串相似度的计算方法 字符串相似度的计算方法有很多,以下是几种常用的方法: 2.1…

    python 2023年6月3日
    00
  • 如何利用Python动态模拟太阳系运转

    如何利用Python动态模拟太阳系运转: 1. 确定模拟目标 首先,我们需要明确自己想要模拟什么。太阳系是由太阳和若干行星、卫星、小行星带等物质组成的,我们可以选择模拟太阳系中所有行星/卫星的运动轨迹等相关特性。 2. 确定模拟工具 Python中有几个用于模拟物理系统的库,比如PyDy、PyMKS等,但是最为常用的可能还是vpython这个库。因为vpyt…

    python 2023年6月3日
    00
  • python 函数中的参数类型

    Python 函数中的参数类型 在 Python 函数中,可以接受多种类型的参数,包括必需参数、默认参数、关键字参数和可变参数。每种不同类型的参数都有自己的特点和使用方法。 必需参数 必需参数是函数定义中的普通参数,也称作“位置参数”,必须按照顺序传递,且在调用函数时必须传递指定数量的参数。 以下是一个求和函数的例子,需要输入两个参数: def add(x,…

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