Python基础:正则表达式(regular expression)详解

在这里插入图片描述

  在Python中,正则表达式是一种强大的工具,可用于匹配和操作字符串。什么是正则表达式? 正则表达式是一种模式匹配语言,用于匹配字符串中的特定模式。这些模式可以是字母、数字、字符组合或其他符号。正则表达式通常用于文本处理、网络编程、数据分析等领域。
  在 Python 中,正则表达式的实现主要基于 re 模块,该模块提供了一组函数和类,用于处理正则表达式的匹配、搜索和替换。

1. 实现原理:

  正则表达式引擎: Python 中的正则表达式引擎使用了正则表达式的编译和匹配两个主要阶段。
  编译阶段: 在编译阶段,正则表达式字符串会被解析并转换成一个内部的模式表示。这个模式表示了匹配规则,它包括普通字符、元字符、字符类、分组等。
  匹配阶段: 一旦正则表达式被编译,就可以用来匹配字符串。匹配过程是基于模式在字符串中的搜索和比对。引擎会从字符串的起始位置开始,尝试找到与模式匹配的子字符串。
  回溯和优化: 在匹配过程中,可能会涉及到回溯的操作,即引擎试图在字符串中不同位置匹配模式。为了提高性能,引擎会使用一些优化策略,避免不必要的回溯。

2. 正则表达式

  正则表达式由普通字符和元字符组成。普通字符就是字母、数字、空格等常见字符;元字符则表示特殊含义,例如点号(.)表示任意字符,星号(*)表示零个或多个前面的字符。
  常用的元字符及其含义:
  .:匹配任意单个字符
  \d:匹配数字(等价于 [0-9])
  \w:匹配字母、数字、下划线(等价于 [a-zA-Z0-9_])
  \s:匹配空格、制表符、换行符等空白字符
  ^:匹配开头
  $:匹配结尾
  *:匹配前面的字符零次或多次
  +:匹配前面的字符一次或多次
  ?:匹配前面的字符零次或一次
  []:匹配方括号中任意一个字符
  ():将其中的内容作为一个组

3.常见示例:

3.1 匹配手机号码

import repattern = r"\d{11}"
string = "My phone number is 12345678901"
match_result = re.search(pattern, string)if match_result:print("Match found:", match_result.group())
else:print("Match not found")

3.2 匹配邮政编码

import repattern = r"\b\d{6}\b"
string = "The postal code is 123456"
match_result = re.search(pattern, string)if match_result:print("Match found:", match_result.group())
else:print("Match not found")

3.3 提取HTML标签中的内容

import repattern = r"<.*?>"
html_string = "<p>This is a <b>bold</b> statement.</p>"
match_result = re.findall(pattern, html_string)print("Matches found:", match_result)

3.4 提取HTML中的链接(href属性)

import repattern = r'href="(.*?)"'
html_code = '<a href="https://www.example.com">Visit our website</a>'
match_result = re.search(pattern, html_code)if match_result:print("Match found:", match_result.group(1))
else:print("Match not found")

3.5 匹配IP地址

import repattern = r"\b(?:\d{1,3}\.){3}\d{1,3}\b"
string = "Server's IP address is 192.168.1.1"
match_result = re.search(pattern, string)if match_result:print("Match found:", match_result.group())
else:print("Match not found")

3.6 匹配URL

import repattern = r"https?://\S+"
text = "Visit our website at https://www.example.com"
match_result = re.search(pattern, text)if match_result:print("Match found:", match_result.group())
else:print("Match not found")

3.7 匹配日期(yyyy-mm-dd)

import repattern = r"\b\d{4}-\d{2}-\d{2}\b"
text = "Event date: 2022-12-31"
match_result = re.search(pattern, text)if match_result:print("Match found:", match_result.group())
else:print("Match not found")

3.8 匹配邮箱地址

import repattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"
text = "Contact us at info@example.com or support@company.net"
match_result = re.findall(pattern, text)print("Matches found:", match_result)

3.9 匹配全名中的姓氏

import repattern = r"\b[A-Z][a-z]+\b"
full_name = "John Doe"
match_result = re.findall(pattern, full_name)print("Matches found:", match_result)

3.10 匹配中文名字

import repattern = r'^[\u4e00-\u9fa5]{1,5}$'
name = "王小明"match_result = re.match(pattern, name)if match_result:print("Match found:", match_result.group())
else:print("Match not found")

3.11 匹配字符串中的所有单词

import repattern = r"\b\w+\b"
text = "This is a simple example."
match_result = re.findall(pattern, text)print("Matches found:", match_result)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel怎么能锁住行 和/或 列的自增长,保证粘贴公式的时候不自增长或者只有部分自增长

例如在C4单元格中输入了公式&#xff1a; 现在如果把C4拷贝到C5&#xff0c;D3会自增长为D4&#xff1a; 现在如果想拷贝的时候不自增长&#xff0c;可以先把光标放到C4单元格&#xff0c;然后按F4键&#xff0c;行和列的前面加上了$符号&#xff0c;锁定了&#xff1a; …

Linux中的进程终止(详解)

Linux中的进程终止 1. 进程退出场景2. 进程常见退出方法2.1 _exit函数2.2 exit函数2.3 return退出 1. 进程退出场景 代码运行完毕&#xff0c;结果正确代码运行完毕&#xff0c;结果不正确代码异常终止 2. 进程常见退出方法 正常终止&#xff08;可以通过 echo $? 查看进程…

【小黑嵌入式系统第九课】PSoC 5LP第一个实验——LED、字符型LCD显示实验

上一课&#xff1a; 【小黑嵌入式系统第八课】初识PSoC Creator™开发——关于PSoC Creator&下载、创建项目、单片机中的hello world&#xff08;点亮一个led) 文章目录 1 实验目的2 实验要求3 实验设备4 实验原理1. 基于 PWM 原理的 LED 亮度控制2. 时间的计量3. 按键抖动…

超全整理,Pytest自动化测试框架-多进程(pytest-xdist)运行总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 平常我们功能测试…

SpringBoot-AOP学习案例

4. AOP案例 SpringAOP的相关知识我们就已经全部学习完毕了。最后我们要通过一个案例来对AOP进行一个综合的应用。 4.1 需求 需求&#xff1a;将案例中增、删、改相关接口的操作日志记录到数据库表中 就是当访问部门管理和员工管理当中的增、删、改相关功能接口时&#xff0…

整形数据和浮点型数据在内存中的存储差别

愿所有美好如期而遇 我们先来看代码&#xff0c;猜猜结果是什么呢&#xff1f; int main() {//以整型数据的方式存储int n 10;float* m (float*)&n;//以整型数据的方式读取printf("%d\n", n);//以浮点型数据的方式2读取printf("%f\n", *m);printf(&…

Linux下查看pytorch运行时真正调用的cuda版本

一般情况我们会安装使用多个cuda版本。而且pytorch在安装时也会自动安装一个对应的版本。 正确查看方式&#xff1a; 想要查看 Pytorch 实际使用的运行时的 cuda 目录&#xff0c;可以直接输出 cpp_extension.py 中的 CUDA_HOME 变量。 import torch import torch.utils imp…

AutoSAR CANIF层配置代码分析

CAN物理控制单元 配置&#xff1a; 生成的代码&#xff1a; CanIf_CtrlStates 解析 类型&#xff1a; typedef union CanIf_CtrlStatesUTag {CanIf_CtrlStatesType raw[3];CanIf_CtrlStatesStructSType str; }CanIf_CtrlStatesUType;typedef struct sCanIf_CtrlStatesType {C…

陪诊系统搭建部署和功能,让就医更便捷和舒适

陪诊系统是一种基于智能手机平台的专门为就医提供陪伴服务的软件。该应用程序包含多种功能&#xff0c;包括提供的医疗知识、行为规范和陪伴服务。它不仅可以帮助用户规划就医时间、预约医生、清楚病情、解答疑问等&#xff0c;还可以在就医时为用户提供实时的陪伴和指导&#…

论文阅读:JINA EMBEDDINGS: A Novel Set of High-Performance Sentence Embedding Models

Abstract JINA EMBEDINGS构成了一组高性能的句子嵌入模型&#xff0c;擅长将文本输入转换为数字表示&#xff0c;捕捉文本的语义。这些模型在密集检索和语义文本相似性等应用中表现出色。文章详细介绍了JINA EMBEDINGS的开发&#xff0c;从创建高质量的成对&#xff08;pairwi…

WEB 自动化神器 TestCafe(一)—安装和入门篇

今天小编给大家带来WEB 自动化神器 TestCafe(一) —安装和入门篇 一、TestCafe 介绍&#xff1a; TestCafe 是一款基于 Node.js 的端到端 Web 自动化测试框架&#xff0c;支持 TypeScript 或 JavaScript 来编写测试用例&#xff0c;运行用例&#xff0c;并生成自动化测试报告。…

Navicat DML 操作

在表格种插入 列信息 -- 修改数据 update 表名 set 列名 值1, 列名值2,[where 条件]; -- 注意&#xff1a;如果update语句没有加where 表里对应行的全部信息都会被改; -- 删除数据 delecte from 表名 [where 条件]; 未删除前&#xff1a; 执行删除后为&#xff1a; DQL - 条…

【已解决】移动号码在移动网上营业厅更换为8元保号套餐

有很多人的副卡基本是为了接收银行卡短信&#xff0c;平时基本不打电话和用流量&#xff0c;每个月固定消费在18-30左右&#xff0c;很浪费。今天发现在网上营业厅就可以修改8元保号套餐&#xff0c;分享给大家。 保号套餐 有以下两种&#xff1a; 解决办法&#xff1a; 1、…

1688API接口接入|阿里1688-B类电商基础链路专业化体验升级

新挑战&#xff0c;新契机&#xff01; 当下整个互联网的竞争环境的变化为我们带来新的机遇和挑战。1688作为连接中小生产商、贸易商和零售商的源头货源首选平台&#xff0c;持续不断地为B类买家提供更专业的服务和更优质的源头厂货供给&#xff0c;打造核心竞争力。 面对新的…

客户端性能优化实践

背景 双十一大促时&#xff0c;客户客服那边反馈商品信息加载卡顿&#xff0c;在不断有订单咨询时&#xff0c;甚至出现了商品信息一直处于加载状态的情况&#xff0c;显然&#xff0c;在这种高峰期接待客户时&#xff0c;是没法进行正常的接待工作的。 起初&#xff0c;页面一…

计算机视觉与机器学习D1

计算机视觉简介 技术背景 了解人工智能方向、热点 目前人工智能的技术方向有&#xff1a; 1、计算机视觉——计算机视觉(CV)是指机器感知环境的能力&#xff1b;这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。物体检测和人脸识别是其比较成功…

客服中心的客户关系管理核心功能

根据国外的调查&#xff0c;拥有客服中心的运营机构&#xff0c;可以保持85%左右的客户忠诚度&#xff0c;而接受过专业培训的客户中心可以将客户忠诚度提高到99%。客服中心作为客户关系管理的前沿&#xff0c;通过提供服务、实时沟通、搜集与分析客户信息、预测客户需求来提升…

数据结构与算法-生成树与最小生成树

生成树与最小生成树 &#x1f388;1.生成树与最小生成树&#x1f52d;1.1生成树与最小生成树的概念&#x1f52d;1.2最小生成树的生成准则&#x1f52d;1.3两种最小生成树算法&#x1f3c6;1.3.1Kruskal算法&#x1f3c6;1.3.2Prim算法 &#x1f388;2.有向无环图及其应用&…

virtuoso 后仿 ADE L error

ADE后仿时出现error ERROR (SFE-23): "input.scs" 299: The instance _57_D32_noxref is referencing an undefined model or subcircuit, parasitic_nwd. Either include the file containing the definition of parasitic_nwd, or define parasitic_nwd before run…