【Python入门与进阶】Python 中的正则表达式

Python 中的正则表达式是通过内置模块 re 来实现的。正则表达式是一种用于模式匹配和文本处理的强大工具,可以用于查找、替换、分割字符串等操作。

基本用法

以下是 re 模块中一些常用的函数和方法:

  1. re.compile(pattern, flags=0):编译正则表达式模式,返回一个模式对象。
  2. re.search(pattern, string, flags=0):在整个字符串中搜索模式,返回第一个匹配对象。
  3. re.match(pattern, string, flags=0):从字符串的起始位置开始匹配模式,返回匹配对象。
  4. re.findall(pattern, string, flags=0):返回字符串中所有非重叠匹配的列表。
  5. re.finditer(pattern, string, flags=0):返回字符串中所有非重叠匹配的迭代器。
  6. re.sub(pattern, repl, string, count=0, flags=0):替换字符串中所有匹配模式的子串。
  7. re.split(pattern, string, maxsplit=0, flags=0):使用模式分割字符串,返回分割后的列表。

示例代码

以下是一些示例代码,展示了如何使用上述函数:

import re# 定义一个正则表达式模式
pattern = r'\d+'  # 匹配一个或多个数字# 在字符串中搜索
string = "The price is 100 dollars and 50 cents"
match = re.search(pattern, string)
if match:print(f"Found: {match.group()}")  # 输出: Found: 100# 从字符串起始位置开始匹配
match = re.match(pattern, string)
if match:print(f"Match from start: {match.group()}")
else:print("No match from start")  # 输出: No match from start# 查找所有匹配项
matches = re.findall(pattern, string)
print(f"All matches: {matches}")  # 输出: All matches: ['100', '50']# 迭代匹配项
for match in re.finditer(pattern, string):print(f"Iter match: {match.group()}")  # 输出: Iter match: 100, Iter match: 50# 替换匹配项
replaced_string = re.sub(pattern, '#', string)
print(f"Replaced string: {replaced_string}")  # 输出: Replaced string: The price is # dollars and # cents# 分割字符串
split_string = re.split(r'\s+', string)  # 按空白字符分割
print(f"Split string: {split_string}")  # 输出: Split string: ['The', 'price', 'is', '100', 'dollars', 'and', '50', 'cents']

正则表达式语法

正则表达式的语法非常丰富,以下是一些常用的语法元素:

  • .:匹配任意单个字符(除换行符)。
  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。
  • *:匹配前一个字符零次或多次。
  • +:匹配前一个字符一次或多次。
  • ?:匹配前一个字符零次或一次。
  • {n}:匹配前一个字符恰好 n 次。
  • {n,}:匹配前一个字符至少 n 次。
  • {n,m}:匹配前一个字符至少 n 次,但是不超过 m 次。
  • []:匹配括号内的任意一个字符,例如 [abc] 匹配 abc
  • |:匹配左边或右边的表达式,例如 a|b 匹配 ab
  • ():捕获组,用于提取匹配的子串。

转义字符

有些字符在正则表达式中有特殊含义,如果你想匹配它们的字面意思,需要使用转义字符 \,例如:

  • \.:匹配字符 .
  • \\:匹配字符 \

模式修饰符

re 模块支持一些修饰符,用于改变正则表达式的行为:

  • re.IGNORECASE (re.I):忽略大小写。
  • re.MULTILINE (re.M):多行模式,^$ 匹配每一行的开始和结束。
  • re.DOTALL (re.S):让 . 匹配所有字符,包括换行符。
  • re.VERBOSE (re.X):忽略模式中的空白符和注释,以便提高可读性。
pattern = re.compile(r"""\d+     # 匹配一个或多个数字\s+     # 匹配一个或多个空白字符\w+     # 匹配一个或多个字母数字字符
""", re.VERBOSE)

掌握正则表达式可以大大提高处理字符串的效率和灵活性。

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

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

相关文章

来自 Kubecon Paris 的快讯

一年一度的 KubeconEU 审查时间到了——它未经过滤,偶尔不受 CNCF 的欢迎——但剧透警告,巴黎取得了巨大的成功。我们总是爱这里的人,我们并不总是爱场地或演出管理,但巴黎是一场胜利,更重要的是,Kubernete…

德国慕尼黑智慧能源展去了多少家国内充电企业?

无论是为了突破本土市场的局限,出海开拓更广阔的国际市场需求,增加销售额,分散市场风险,还是为了通过出海获得国际经验后以反哺国内市场。 各大行业都出现了“要么出海,要么出局”的声音。扬帆出海,参与全球…

C语言 | Leetcode C语言题解之第155题最小栈

题目: 题解: //单调栈 单调递减 typedef struct {//正常 stackint stack[10000];int stackTop;//辅助 stackint minStack[10000];int minStackTop; } MinStack;MinStack* minStackCreate() {MinStack* newStack (MinStack *) malloc(sizeof(MinS…

零基础入门办公软件速成学习 沈阳电脑办公软件培训

专业指导:由专业的培训师或讲师提供指导,确保员工能够全面、系统地学习软件的各种功能和技巧。 定制课程:根据公司需求和员工现有水平定制课程内容,确保培训的针对性和实用性。 互动学习:通过实时演示、练习和答疑环节…

Android SurfaceFlinger——SF与HWC交互流程(六)

在上一篇 HWC2On1Adapter 初始化完成后,调用 initWithDevice() 实例化 HwcHal 对象,然后创建高级接口(IComposer),使得调用者能够通过这个接口与硬件进行交互。这里我们就来看一下 HwcHal 和 IComposer 的初始化流程。…

到底什么是载波聚合?

载波聚合技术是无线通信系统中的一项关键创新,它极大地提升了数据传输的效率和速度。 这项技术的核心思想其实相当直观,即:如果能够将多个独立的通信路径或连接聚合起来,那么相比单一路径,就能够传输更多的信息。 这就…

mysql设置密码复杂度策略,登录失败次数限制

在配置文件中加入如下配置,重启mysql服务 [mysqld] #密码复杂度插件 plugin-load-addvalidate_password.so validate-passwordFORCE_PLUS_PERMANENT validate_password_policy2 # 0简单 1普通 2困难 validate_password_length9 # 密码长度限制 #登录失败次数、时间…

描述React Hooks中的useMemo和useCallback的区别和用途。

React Hooks API中的useMemo和useCallback都是用于优化性能的钩子,但它们的用途和工作方式略有不同: 推荐大家看看我过往的文章 useMemo useMemo是一个性能优化钩子,它返回一个记忆化的值。useMemo可以避免在组件渲染时进行昂贵的计算或操作…

一文读懂数据仓库ODS层

数据仓库一般分为三层,分别为数据贴源层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(ADS,Application Data Service)。其中…

方舟云康亏损收窄:三年近10亿销售成本,平均付费及月活仍大幅承压

《港湾商业观察》施子夫 三度递表后,终于通过聆讯,方舟云康控股有限公司(以下简称,方舟云康)有望近期内挂牌港交所。方舟云康的国内运营主体为广州方舟云康信息科技集团有限公司、广州方舟医药有限公司。 值得关注的是,亏损的难…

shiro整合springboot报错--解决方法

代码下载 报错信息 //测试权限认证访问http://localhost:8080/myController/userLogin?namezhangsan&pwd123报错 org.apache.shiro.UnavailableSecurityManagerException: No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.ut…

Python项目Django框架发布相关

1.Nginx配置 server { listen 80; server_name 域名地址;location / { uwsgi_pass 0.0.0.0:4563;// 运行地址include uwsgi_params;} location /static{ // 静态文件路径alias /www/wwwroot/djserverproject/static;}}server { listen 443; server_name 域名地址;ssl_certific…

@/utils/china里面的详细数据

/utils/china里面的详细数据 (function (root, factory) {if (typeof define "function" && define.amd) {// AMD. Register as an anonymous module.define(["exports", "echarts"], factory);} else if (typeof exports "obje…

TS中获取函数的参数类型、函数的返回值类型、构造函数的参数类型

背景:通常在业务中我们需要封装一些公共函数或者引入第三方库的函数、类,在TS语法环境下,如何在调用函数处给定义的变量进行类型定义?是需要全局定义变量类型亦或是各自定义?当然都不需要,我们可以通过ts中…

整理好了!2024年最常见 20 道设计模式面试题(十)

上一篇地址:整理好了!2024年最常见 20 道设计模式面试题(九)-CSDN博客 十九、访问者模式是如何分离算法与操作对象的? 访问者模式(Visitor Pattern)是一种行为型设计模式,它允许我…

Python中文自然语言处理(NLP)中文分词工具库之pkuseg使用详解

概要 在中文自然语言处理(NLP)中,分词是一个基础且关键的任务。pkuseg 是由北京大学开发的一个中文分词工具,专为处理现代汉语而设计。它采用了先进的深度学习技术,能够准确地进行中文分词,同时支持自定义词典和多领域分词。本文将详细介绍 pkuseg 库,包括其安装方法、…

《图数据库:理论与实践》书籍销售火爆,二次印刷重磅来袭!

好书共享,就在此刻! 由创邻科技联合电子工业出版社匠心打磨三年,最终成稿的图数据库书籍《图数据库:理论与实践》发行上线后,获得了广泛好评,各平台销量迅速破千,并荣登京东 “数据库图书榜”热…

给PDF添加书签的通解-姜萍同款《偏微分方程》改造手记

背景 网上找了一本姜萍同款的《偏微分方程》,埃文斯,英文版,可惜没有书签,洋洋七百多页,没有书签,怎么读?用福昕编辑器自然能手工一个个加上,可是劳神费力,非程序员所为…

Spock使用Spy来Mock内部调用的方法

使用Spy来Mock内部调用的方法 如果使用Spy不生效参考 使用前先看看哪些场景不生效,避免浪费太多时间,我曾经就是mock一个方法折腾两个小时都没弄出来,后来问了 小美智能助理 ,告诉我其中private修饰的方法不生效..我把private改成protected​ 修饰之后, 再次重启单测,立马就好…

【Nprogress】页面跳转进度条

【Nprogress】页面跳转进度条 介绍安装引入并简单使用基本用法配置项常用方法 参考文档: 【博主:码农键盘上的梦】vue使用Nprogress进度条功能实现 【博主:夜幕506】vue项目的进度条插件 – nprogress 【官方项目地址】https://www.npmjs.com…