必知必会干货!Python正则表达式常用函数

1.正则表达式

  • 正则表达式:是一个特殊的字符序列,计算机科学的一个概念,主要用来检索/替换哪些符合某个模式的文本

  • 在python中使用正则表达式,主要是借助re模块来实现

  • ​特点

    • 灵活性/功能性/逻辑性非常强

    • 可以使用极其简单的方法达到字符串的复杂控制

    • 对于刚接触的人来说有些晦涩难懂

  • 应用场景

    • 爬虫

    • 验证手机号、邮箱、身份证号等文本

    • 数据分析中的数据清洗等操作

2.常用函数

  • 导入re模块

import re
  • \d:表示0-9之间的任意数字

  • +:表示前面的字符可以出现1次或多次

  • re.match 函数

"""
re.match(正则表达式, 要验证的字符串, 正则表达式的修饰符(可选参数))
作用:用于匹配字符串是否以指定的正则内容开头,匹配成功返回对象,匹配失败返回None
"""
print(re.match("\\d+", "1234hello"))    # <re.Match object; span=(0, 4), match='1234'>
print(re.match("\\d+", "hello1234"))    # None
  • re.search 函数

"""
re.search(正则表达式, 要验证的字符串, 正则表达式的修饰符(可选参数))
作用:用于匹配字符串中是否包含指定的正则内容,匹配成功返回对象,匹配失败返回None
"""
print(re.search("\\d+", "9876hello"))    # <re.Match object; span=(0, 4), match='9876'>
print(re.search("\\d+", "hello9876"))    # <re.Match object; span=(5, 9), match='9876'>
print(re.search("\\d+", "hel9876lo"))    # <re.Match object; span=(3, 7), match='9876'>
print(re.search("\\d+", "hello"))    # None
  • re.findall 函数

"""
re.findall(正则表达式, 要验证的字符串)
作用:使用正则表达式获取匹配成功的数据,匹配成功返回的是一个列表
"""
print(re.findall("\\d+", "hello123world987welcome3232"))    # ['123', '987', '3232']
print(re.findall("\\d+", "helloworld"))    # []

3.实例

  • 封装函数判断手机号码是否合法

"""
合法的手机号码:1.长度是11位
2.数字1开头
3.全部是数字
"""

def checkPhone(tel):
    if len(tel) != 11:
        print("手机号码的长度不是11位")
        return
    if tel[0] != "1":
        print("手机号码不是数字1开头")
        return
    if not tel.isdigit():
        print("手机号码不是全部是数字...")
        return
    print("是一个合法的手机号码...")

checkPhone("1369264521")
checkPhone("23692645213")
checkPhone("1369264521a")
checkPhone("13692645213")

# 使用正则表达式验证手机号码是否合法
import re
result = re.search("^1[3-9]\\d{9}$", "13692645213")
# result = re.search("^1[3-9]\\d{9}$", "23692645213")
# result = re.search("^1[3-9]\\d{9}$", "10692645213")
# result = re.search("^1[3-9]\\d{9}$", "13692645a13")
if result:
    print("是合法的手机号码")
else:
    print("不是合法的手机号码")
  • 执行结果

手机号码的长度不是11位
手机号码不是数字1开头
手机号码不是全部是数字...
是一个合法的手机号码...
是合法的手机号码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/472890.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【NTN 卫星通信】 车辆物联网设备通过NTN和TN切换的应用场景

1 场景描述 对于有两个3GPP无线接入网服务的大面积农田和农场&#xff0c;物联网设备可以通过NTN和TN接入网同时受益于5G系统的双转向数据连接能力。   在这个用例中&#xff0c;我们有一个广域的农业自动化应用系统来控制农业车辆&#xff0c;例如&#xff0c;一个装有数百个…

二分查找算法(1)

算法介绍 二分查找适用范围不止是有序数组&#xff0c;很多有“二段性”的数组其实都可以使用二分查找&#xff0c;什么是“二段性”呢&#xff1f;在数组中&#xff0c;我们查到某个数不符合条件后&#xff0c;就可以排除它之前或之后的所有数据&#xff0c;这种性质就叫做“…

【Linux】盘点广义层面上【三种最基本的进程状态】

前言 大家好吖&#xff0c;欢迎来到 YY 滴 Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

119.设计链表(力扣)

代码解决 class MyLinkedList { public:// 定义链表节点结构体struct LinkedNode {int val;LinkedNode* next;LinkedNode(int val):val(val), next(nullptr){}};MyLinkedList() {dummyhead new LinkedNode(0);size0;}int get(int index) {if (index > (size - 1) || index…

分布式文件存储与数据缓存(二)| Redis

目录 Redis概述_什么是NoSQLNoSQL的四大分类KV型NoSql&#xff08;代表----Redis&#xff09;列式NoSql&#xff08;代表----HBase&#xff09;文档型NoSql&#xff08;代表----MongoDB&#xff09;搜索型NoSql&#xff08;代表----ElasticSearch&#xff09; 关系型数据库和非…

刷力扣看见一个寻找单身狗的问题?【力扣题解】

今天刷力扣遇到一道有意思的题目&#xff0c;题目是写着撞色问题177 &#xff0c;当我写完这个题去看看有什么好的解题方式的时候&#xff0c;看见一个有趣的题解问题&#xff0c;他对这个题目的描述是几对情侣&#xff0c;带几个单身狗出去玩&#xff0c;然后现在我们要把这几…

使用Laravel开发项目

如何使用Laravel框架开发项目 一、安装Laravel框架 1.在安装Laravel框架钱我们需要先查看要安装的Laravel框架版本以及版本所需要的安装运行条件。 2.配置好安装环境后再安装Laravel框架 2.1.配置安装环境 1&#xff09;PHP版本 2&#xff09;PHP OpenSSL扩展 3&#xff…

详解隐私计算框架及技术要点

隐语架构一览 为什么这样分层&#xff1f; 完备性透明性开放性 隐语架构解析 产品层 算法层 隐语PSI特点 PIR Data Analysis SCQL 核心特性 联邦学习 特色 计算层 SPU 核心 HEU 同态加密设备 TEEU 密码原语 资源层 kuscia 互联互通 跨域管控 最后

软件工程-第三版王立福-第1章 绪论

本书结合IEEE最新发布的软件工程体系SWEBOK&#xff0c;和IEEE/ACM软件工程学科小组公布的软件工程教育知识体系SEEK&#xff0c;北大本科生指定教材。注重基础知识的系统性&#xff0c;选材的先进性及知识的应用。2009年出版 软件开发本质的认识&#xff0c;两大技术问题&…

计算机缺失xapofx1_5.dll如何修复?分享多种修复方法轻松搞定

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是xapofx1_5.dll丢失。丢失xapofx1_5.dll文件对电脑系统及运行程序的影响是多方面的&#xff0c;某些依赖于xapofx1_5.dll文件的特定软件或应用程序可能无法启动或运行过程中出现崩溃现象&…

上位机图像处理和嵌入式模块部署(qmacvisual脚本编辑)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 个人认为qmacvisual软件中&#xff0c;另外一个鲜明的特色&#xff0c;就是它本身支持javascript脚本编写&#xff0c;虽然是利用qt script engine…

Java基础 学习笔记九

for循环 for循环语句的语法结构 for(初始化表达式;条件表达式;更新表达式){循环体;}初始化表达式最先被执行&#xff0c;而且只执行一次条件表达式的执行结果必须是一个布尔类型的值更新表达式一般是负责更新某个变量值的&#xff08;只有更新了某个变量值&#xff0c;条件表达…

codeforces 1600分

文章目录 1.[G. Special Permutation](https://codeforces.com/problemset/problem/1352/G)2.[D. Constructing the Array](https://codeforces.com/problemset/problem/1353/D)3.[C2. k-LCM (hard version)](https://codeforces.com/problemset/problem/1497/C2)4.[C. Circle …

7.【Linux】进程间通信2(共享内存||消息队列)

共享内存 介绍 1.共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。 2.当共享内存创建出来后&#xff0c;通过系统调用挂接到…

软件工程-第9章 软件工程项目管理概述

9.1 软件工程管理活动 9.2 软件规模、成本和进度估算 9.3 能力成熟度模型CMM 9.4 ISO 9000系列标准简介 9.5 CMM与ISO 9000系列标准的比较 9.6 本章小结

安装MySQL5.7.19 + 解决数据库乱码

文章目录 1.删除mysql服务 sc delete mysql2.解压到D:\mysql5.7下3.配置管理员环境变量4.D:\mysql5.7\mysql-5.7.19-winx64下创建my.ini1.创建文件2.文件内容 5.管理员打开cmd&#xff0c;切换到 D:\mysql5.7\mysql-5.7.19-winx64\bin6.输入 mysqld -install 安装mysql服务7.初…

python 中怎样使用任意关键词实参?

在 Python 中&#xff0c;可以使用任意数量的关键字实参和任意关键字实参&#xff0c;也被称为 kwargs。 这允许你在函数调用时传递任意数量的关键字参数。 你可以使用任意数量的关键字实参&#xff08;Keyword Arguments&#xff09;和任意关键字实参&#xff08;Arbitrary Ke…

LeetCode每日一题——最后一个单词的长度

最后一个单词的长度OJ链接&#xff1a;58. 最后一个单词的长度 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路 &#xff1a; 统计字符串中最后一个单词的长度&#xff0c;那么我们可以定一一个指针&#xff0c;从后向前开始统计&#xff0c;当指针指向的元素…

C语言-----冒泡排序

今天&#xff0c;让我们来学习一下C语言中一个简单的排序算法------冒泡排序。 什么是冒泡排序呢&#xff1f; 冒泡排序是C语言中一个可以将一个数组的内容按照升序或者降序进行重新排列的算法。简单来说&#xff0c;是一种排序的思维。 冒泡排序的核心思想&#xff1a;让同…

2352.相等行列对

题目&#xff1a;给一个下标从0开始、大小为n x n的整数矩阵grid&#xff0c;返回满足Ri 行和 Cj 列相等的行列对&#xff08;Ri,Cj&#xff09;的数目。 如果行和列以相同的顺序包含相同的元素&#xff08;即相等的数组&#xff09;&#xff0c;则认为二者是相等的。 解题思路…