Python笔记 - 正则表达式

正则表达式(Regular Expression,简称regex)是一种强大的工具,用于匹配字符串模式。在Python中,正则表达式通过re模块提供。本文将带你深入了解Python中的正则表达式,从基础概念到高级用法。

1. 什么是正则表达式?

正则表达式是一种用来描述字符串模式的方法。它可以用来匹配、查找和替换文本中的特定模式。通过使用正则表达式,你可以定义一些规则,然后搜索文本中符合这些规则的内容。这种功能在文本处理、数据抽取和字符串匹配等领域非常有用。

2. 基本概念

在介绍具体用法之前,先了解一些基本概念:

  • 模式(Pattern):正则表达式的核心,由字符和特殊符号组成,用于描述字符串的规则。
  • 匹配(Match):字符串是否符合模式。
  • 组(Group):通过括号()来定义子模式,方便提取子字符串。

3. 常用符号

以下是一些常用的正则表达式符号:

  • .:匹配除换行符以外的任意字符。
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • *:匹配前一个字符零次或多次。
  • +:匹配前一个字符一次或多次。
  • ?:匹配前一个字符零次或一次。
  • {n}:匹配前一个字符n次。
  • {n,m}:匹配前一个字符n到m次。
  • []:匹配方括号内的任意字符。
  • |:匹配左右任意一个表达式。
  • \d:匹配任何数字,相当于[0-9]
  • \D:匹配任何非数字字符。
  • \w:匹配任何字母、数字、下划线字符。
  • \W:匹配任何非字母、数字、下划线字符。
  • \s:匹配任何空白字符(包括空格、制表符等)。
  • \S:匹配任何非空白字符。

4. Python中的正则表达式

在Python中,可以使用re模块进行正则表达式操作。以下是一些常用方法:

导入re模块

import re

re.match()

re.match从字符串的起始位置匹配正则表达式。

import repattern = r'hello'
text = 'hello world'
match = re.match(pattern, text)if match:print("Match found:", match.group())
else:print("No match")

re.search()

re.search扫描整个字符串并返回第一个成功的匹配。

import repattern = r'world'
text = 'hello world'
match = re.search(pattern, text)if match:print("Match found:", match.group())
else:print("No match")

re.findall()

re.findall返回字符串中所有非重叠的匹配。

import repattern = r'\d+'
text = 'There are 123 apples and 456 oranges.'
matches = re.findall(pattern, text)print("Matches found:", matches)

re.sub()

re.sub用于替换字符串中的匹配项。

import repattern = r'apples'
replacement = 'bananas'
text = 'I like apples'
new_text = re.sub(pattern, replacement, text)print("Replaced text:", new_text)

re.split()

re.split用于根据匹配项拆分字符串。

import repattern = r'\s+'
text = 'Split this sentence into words.'
words = re.split(pattern, text)print("Words:", words)

使用分组

分组是正则表达式的强大功能之一,可以提取子字符串。

import repattern = r'(\d+)-(\d+)-(\d+)'
text = 'My phone number is 123-456-7890'
match = re.search(pattern, text)if match:print("Full match:", match.group(0))print("Area code:", match.group(1))print("Prefix:", match.group(2))print("Line number:", match.group(3))

5. 高级用法

非贪婪匹配

默认情况下,正则表达式是贪婪的,会匹配尽可能多的字符。使用?可以进行非贪婪匹配。

import retext = 'He said: "Hello, world!"'
pattern_greedy = r'".*"'
pattern_nongreedy = r'".*?"'match_greedy = re.search(pattern_greedy, text)
match_nongreedy = re.search(pattern_nongreedy, text)print("Greedy match:", match_greedy.group())
print("Non-greedy match:", match_nongreedy.group())

命名组

使用命名组可以更方便地提取子字符串。

import repattern = r'(?P<area>\d+)-(?P<prefix>\d+)-(?P<line>\d+)'
text = 'My phone number is 123-456-7890'
match = re.search(pattern, text)if match:print("Area code:", match.group('area'))print("Prefix:", match.group('prefix'))print("Line number:", match.group('line'))

6. 实战案例

验证邮箱地址

import redef is_valid_email(email):pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'return re.match(pattern, email) is not Noneemail = 'test@example.com'
print("Is valid email:", is_valid_email(email))

提取URL中的域名

import redef extract_domain(url):pattern = r'https?://(www\.)?(\w+\.\w+)'match = re.search(pattern, url)if match:return match.group(2)return Noneurl = 'https://www.example.com/path/to/page'
print("Domain:", extract_domain(url))

7. 结论

正则表达式是一种非常强大的工具,可以极大地简化字符串处理任务。在Python中,re模块提供了丰富的正则表达式功能。通过本文的介绍,相信你已经掌握了基本的正则表达式语法和一些常用的操作。希望这些内容能够帮助你在日常编程中更加高效地处理字符串。

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

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

相关文章

压缩映射定理证明

收缩映射定理&#xff08;又称Banach不动点定理&#xff09;是一个重要的结果&#xff0c;特别是在分析和应用数学中。 定理&#xff08;收缩映射定理&#xff09;&#xff1a;假设是一个从度量空间 (X,d) 到自身的函数&#xff0c;如果 是一个收缩映射&#xff0c;即存在常数 …

华为---VLAN-配置Eth-Trunk链路聚合(三)

6.3 配置Eth-Trunk链路聚合 6.3.1 原理概述 在没有使用Eth-Trunk前&#xff0c;百兆以太网的双绞线在两个互连的网络设备间的带宽仅为100Mbit/s。若想达到更高的数据传输速率&#xff0c;则需要更换传输媒介&#xff0c;使用千兆光纤或升级成为千兆以太网。这样的解决方案成本…

GenICam标准(五)

系列文章目录 GenICam标准&#xff08;一&#xff09; GenICam标准&#xff08;二&#xff09; GenICam标准&#xff08;三&#xff09; GenICam标准&#xff08;四&#xff09; GenICam标准&#xff08;五&#xff09; GenICam标准&#xff08;六&#xff09; 文章目录 系列文…

sklearn、tensorflow、keras区别与联系--九五小庞

1.sklearn库 sklearn是一个功能强大的Python机器学习库。 sklearn库提供了多种常用的机器学习算法&#xff0c;包括回归、分类、聚类和降维等&#xff0c;适用于那些希望通过预制的算法快速实现原型设计和数据分析的开发者和研究人员。sklearn几乎涵盖了所有常见的机器学习模…

【Stable Diffusion教程】AI绘画工具SD如何安装使用?三种方法带你轻松上手!(附安装包和云端部署教程)

大家好&#xff0c;我是向阳 AI绘画专业工具Stable Diffusion在哪里用怎么安装&#xff1f;这一期给大家介绍三种使用SD的方法&#xff0c;无论你有没有专业显卡都能轻松上手SD哦&#xff5e; 一、SD本地部署秋葉安装包安装方法 如果你有进一步的需求&#xff0c;想要学习SD…

丘钛微注册陷入“停滞”IPO中止:营收净利润连年下滑,毛利率骤降

《港湾商业观察》施子夫 王璐 从2021年6月末算起&#xff0c;在冲刺创业板这条道路上&#xff0c;昆山丘钛微电子科技股份有限公司&#xff08;以下简称&#xff0c;丘钛微&#xff09;已经耗时了三年。 实际上在三年中&#xff0c;丘钛微早在2022年8月17日就首发过会&#…

autosar RTE模块功能介绍

在现代汽车电子系统的开发中,AUTOSAR(汽车开放系统架构)扮演着至关重要的角色。而 RTE(Runtime Environment,运行时环境)作为 AUTOSAR 虚拟功能总线接口,具有极其关键的含义和重要性。 RTE 可以被理解为连接软件组件的桥梁和通道。在 AUTOSAR 架构中,各个软件组件通过 …

Postgis中查找距离某条记录坐标100米内的数据

前提 表tablename带有空间字段geom sql语句 #使用 WITH 子查询 target_geom 获取 objectid1 的几何字段 geom。#主查询中使用 ST_DWithin 函数查找距离目标几何字段 100 米内的所有记录&#xff08;除 objectid1 本身&#xff09;。#因为坐标系为 4326&#xff0c;需要将100…

52.Python-web框架-Django - 多语言编译-fuzzy错误

目录 1.起因 2.原因 3.解决方法 3.1手动移除fuzzy标记 3.2重新生成po文件&#xff0c;并检查是否还存在fuzzy标记 3.3重新编译生成mo文件 1.起因 在Django的国际化和本地化过程中&#xff0c;当你发现某些字段仅显示msgid&#xff0c;而不显示msgstr时&#xff0c;可能是…

终极Python备忘单:日常任务的实用Python

本文是一篇节选翻译&#xff0c;原文: Ultimate Python Cheat Sheet: Practical Python For Everyday Tasks 选取了原文中最常见的python操作&#xff0c;对于数据库交互&#xff0c;科学计算等相对领域化的内容没有选取&#xff0c;有需要的可以直接读原文. 如需要PDF方便查…

EMERSON DELTAV KJ2231X1-EA1 SIS 继电器模块

EMERSON DELTAV KJ2231X1-EA1 SIS 继电器模块 工业网络环境中的OPC UA 艾默生&#xff08;Emerson&#xff09;是一家全球性的技术和软件公司&#xff0c;为全球各主要行业提供创新解决方案。通过其领先的自动化产品组合&#xff0c;包括其在AspenTech的多数股权&#xff0c;…

燃气守护神:燃气管网安全运行监测解决方案

在这个智能科技日新月异的时代&#xff0c;燃气安全却时有发生&#xff0c;严重危害人们的生命财产安全&#xff0c;因此旭华智能根据相关政策要求并结合自身优势&#xff0c;打造了一套燃气管网安全运行监测解决方案&#xff0c;他犹如一位“燃气守护神”&#xff0c;悄然守护…

计算机组成原理之存储器

文章目录 存储器概述存储器的分类情况按照存储器在系统中的作用分类按存储介质分类按存取方式分类 主存储器的技术指标 存储器概述 程序的局部性原理&#xff08;构成多级存储系统的依据&#xff09;&#xff1a;在某一个时间段你频繁访问某一局部的存储器地址空间&#xff0c;…

綦江蜘蛛池四川官网下载

baidu搜索&#xff1a;如何联系八爪鱼SEO? baidu搜索&#xff1a;如何联系八爪鱼SEO? baidu搜索&#xff1a;如何联系八爪鱼SEO? CCSEO蜘蛛统计开发思路一般包括以下几个步骤: 定义需求:明确统计蜘蛛访问数据的目标和要求,例如需要获取哪些信息,统计的精度和频率等。 确定数…

Python数据分析与机器学习在金融风控中的应用

&#x1f4d1;引言 金融风控是金融机构确保其业务健康运行、减少损失的重要手段。随着大数据和人工智能技术的发展&#xff0c;利用Python进行数据分析和机器学习可以为金融风控提供强有力的支持。本文将探讨Python在金融风控中的应用&#xff0c;详细介绍如何利用Python进行数…

重生之 SpringBoot3 入门保姆级学习(18、事件驱动开发解耦合)

重生之 SpringBoot3 入门保姆级学习&#xff08;18、事件驱动开发解耦合&#xff09; 5、SpringBoot3 核心5.1 原始开发5.2 事件驱动开发 5、SpringBoot3 核心 5.1 原始开发 LoginController package com.zhong.bootcenter.controller;import com.zhong.bootcenter.service.A…

爬虫初学篇——看完这些还怕自己入门不了?

初次学习爬虫&#xff0c;知识笔记小分享 学scrapy框架可看&#xff1a;孤寒者博主的【Python爬虫必备—&#xff1e;Scrapy框架快速入门篇——上】 目录&#x1f31f; 一、&#x1f349;基础知识二、&#x1f349;http协议&#xff1a;三、&#x1f349;解析网页(1) xpath的用…

基于单片机的无线遥控自动翻书机械臂设计

摘 要&#xff1a; 本设备的重点控制部件为单片机&#xff0c;充分实现了其自动化的目的。相关研究表明&#xff0c;它操作简单便捷&#xff0c;使残疾人在翻书时提供了较大的便利&#xff0c;使用价值性极高&#xff0c;具有很大的发展空间。 关键词&#xff1a; 机械臂&…

25天录用!快到飞起的宝藏SSCI,免版面费,1天见刊!毕业评职即刻拿下

本周投稿推荐 SSCI • 中科院2区&#xff0c;6.0-7.0&#xff08;录用友好&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 7天录用-检索&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#xff0c;0.5-1.0&#xff08;录用…

【odoo17】富文本小部件widget=“html“的使用

概要 HTML富文本字段通常用于在模型中存储和显示格式化的文本。通过这种字段&#xff0c;用户可以利用HTML标签来格式化文本&#xff0c;从而在前端呈现更丰富的内容。 在Odoo中&#xff0c;HTML字段在没有明确指定widget"html"的情况下&#xff0c;也会默认显示为富…