一文入门re 正则表达式

一、常用方法

(一)匹配

一般使用方法
第一个参数:正则模式
第二个参数:需要处理的字符串
第三个参数:附加处理方法

result从任意位置开始匹配,返回match,没有匹配到返回None
result = re.search(r"abc","1bcabcdbcd",re.I)
print(result,type(result),result.start(),result.end(),result.group())

findall以列表的形式返回所有匹配到的字符串
result = re.findall(r"abc","abcabcdAbcde")
print(result)

 

match从第一个字符开始匹配,如果第一个字符不匹配,就返回None
result = re.match(r"abc","1bcabcdAbcde")
print(result)   # None
fullmatch匹配整个字符串,返回match或None
result = re.fullmatch(r"1\w+e","1bcabcdAbcde")
print(result)

 

finditer返回迭代器,每一个元素都是Match
result = re.finditer(r"abc","abcabcdAbcde")
for data in result:print(data.group())

 

(二)替换

一般使用方法

第一个参数:正则模式 第二个参数:替换成的内容 第三个参数:需要替换的字符串 第四个参数:替换次数 第五个参数:附加标识

sub把所有匹配成功的都进行替换,返回替换过后的字符串

result = re.sub(r"abc","星星","abcabcdAbcde")
print(result)

 

subn元组形式返回替换过的字符串和替换次数
result = re.subn(r"abc","星星","abcabcdAbcde")
print(result)

 

(三)切割

第一个参数是正则模式 第二个参数是需要切割的字符串 第三个参数是最大切割次数

split返回切割之后的内容

result = re.split(r"abc","abcabcdAbcde")
print(result)

二、特殊字符

# \w 匹配数字 字母 下划线
# result = re.findall(r"\w","abc123+_*?-")
# print(result)
# \W 匹配非数字 字母 下划线
# result = re.findall(r"\W","abc123+_*?-")
# print(result)# \d 匹配数字
# result = re.findall(r"\d","abc123+_*?-")
# print(result)
# \D 匹配非数字
# result = re.findall(r"\D","abc123+_*?-")
# print(result)# \S匹配 空白
# result = re.findall(r"\s","a bc123+_*?-\t\n")
# print(result)
# \S匹配 非空白
# result = re.findall(r"\S","a bc123+_*?-\t\n")
# print(result)# . 除了\n不匹配,其他都匹配
# result = re.findall(r".","ac +-*/ .46\t)\n")
# print(result)
# . 加上re.S后匹配所有
# result = re.findall(r".","ac +-*/ .46\t)\n",re.S)
# print(result)# ^ 开头
# result = re.findall(r"^a","ac +-*/\nab .46\t)")
# print(result)
# re.M 可以匹配\n
# result = re.findall(r"^a","ac +-*/\nab .46\t)",re.M)
# print(result)# $ 结尾
# result = re.findall(r" $","ca +-*/\nba .46\t ")
# print(result)
# re.M 可以匹配\n
# result = re.findall(r" $","ca +-*/ \nba .46\t ",re.M)
# print(result)# 贪婪:尽可能匹配多个
# * 代表有>=0个
# + 代表有>=1个
# ? 代表有1个或者0个
# result = re.findall(r"\d*","123456789")
# print(result)
# result = re.findall(r"\d+","123456789")
# print(result)
# result = re.findall(r"\d?","123456789")
# print(result)# 非贪婪:尽可能匹配少个数
# 在贪婪模式后追加一个?
# result = re.findall(r"\d*?","123456789")
# print(result)
# result = re.findall(r"\d+?","123456789")
# print(result)
# result = re.findall(r"\d??","123456789")
# print(result)# {n}匹配n次
result = re.findall(r"\d{2}","123456789")
print(result)
# {m,n}匹配m-n次
result = re.findall(r"\d{2,4}","123456789")
print(result)
# {m,n}? 非贪婪匹配
result = re.findall(r"\d{2,4}?","123456789")
print(result)
# []匹配其中一个
result = re.findall(r"[1-9a-z]","123456789abcdfaz")
print(result)
# |或者
result = re.findall(r"[1-9]|[a-z]","123456789abcdfaz")
print(result)
# ()分组
result = re.findall(r"(.*?)","123456789abcdfaz")
print(result)

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

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

相关文章

Linux:CentOS配置

一,安装VMware 这个可以通过官网获取 vmware下载 也可以联系我,我发给你 二,安装CentOS Centos官网找要下载的版本: https://vault.centos.org/ 阿里云镜像:https://mirrors.aliyun.com/centos-vault/?spma2c6h.13…

window搭建代理ip池:详细的搭建指南分享

在Windows上搭建代理IP池的指南 在进行网络爬虫或其他需要频繁请求的任务时,建立一个代理IP池可以有效提高抓取效率和隐私保护。本文将详细介绍如何在Windows环境下搭建一个简单的代理IP池。 1. 准备工作 在开始之前,请确保你具备以下条件&#xff1a…

使用Nexus3为containerd和docker配置镜像代理

1.Nexus3介绍: Nexus3(Nexus Repository Manager3)是一个用于存储、组织和管理软件组件(如 JAR文件、npm包、Docker镜像等)的仓库管理系统。它由Sonatype开发并维护。Nexus Repository Manger支持许多流行的包管理工具…

java 函数接口Consumer简介与示例【函数式编程】【Stream】

Java 8 中的 消费者接口Consumer 是一个函数接口&#xff0c;它可以接受一个泛型 类型参数&#xff0c;它属于java.util.function包。我们来看看Java函数接口库中的定义&#xff1a; FunctionalInterface public interface Consumer<T> {/*** Performs this operation o…

vue+elmentui 定义狂拽黑金配色的按钮+消息框

1 修改效果 通过自定义样式的方式可以修改elmentui的配色&#xff0c;例如下面我们修改掉了button的primary配色为黑金色&#xff1a; 修改前&#xff1a; 修改后 修改了elementui 的$message(success类型&#xff09;颜色为黑金色、图标也修改为金色了&#xff1a; 修改前…

Windows 环境下 Go 语言使用第三方压缩包 gozstd 的报错处理

该文章主要记录在windows平台用go语言使用gozstd包时&#xff0c;遇到的错误及处理过程&#xff08;踩坑之旅&#xff09;&#xff01; 一、gozstd简介 gozstd是一个针对Zstandard&#xff08;简称Zstd&#xff09;的Go语言包装器&#xff0c;它提供了简单且高效的API&#xf…

Blazor开发框架Known-V2.0.8

V2.0.8 Known是基于Blazor的企业级快速开发框架&#xff0c;低代码&#xff0c;跨平台&#xff0c;开箱即用&#xff0c;一处代码&#xff0c;多处运行。目前已有部分客户在使用&#xff0c;最近客户的项目和产品&#xff0c;有的在Docker中运行&#xff0c;有的在重新升级改造…

使用 ESP32 和 TFT 屏幕显示实时天气信息 —— 基于 OpenWeatherMap API

实时监测环境数据是一个非常常见的应用场景&#xff0c;例如气象站、智能家居等。这篇博客将带你使用 ESP32 微控制器和一个 TFT 屏幕&#xff0c;实时显示当前城市的天气信息。通过 OpenWeatherMap API&#xff0c;我们能够获取诸如温度、天气情况以及经纬度等详细的天气数据&…

Python异常处理

Python的异常处理是编程中非常重要的一部分&#xff0c;它允许程序在运行时遇到错误时优雅地处理这些错误&#xff0c;而不是简单地崩溃。异常处理机制包括try、except、else、finally等关键字&#xff0c;它们共同工作以捕获和处理程序中可能出现的错误。 1.异常的基本概念 …

如何有效清理宝塔控制面板中的垃圾文件与优化系统性能

宝塔控制面板&#xff08;BT-Panel&#xff09;作为一款流行的服务器管理软件&#xff0c;极大地简化了Linux服务器的管理任务&#xff0c;包括网站部署、数据库管理、文件操作等。然而&#xff0c;随着服务器运行时间的增长&#xff0c;系统中会积累各种临时文件、日志文件、缓…

探索Python的工业通信之光:pymodbus的奇妙之旅

文章目录 探索Python的工业通信之光&#xff1a;pymodbus的奇妙之旅背景&#xff1a;为何选择pymodbus&#xff1f;pymodbus是什么&#xff1f;如何安装pymodbus&#xff1f;5个简单的库函数使用方法3个场景使用示例常见bug及解决方案总结 探索Python的工业通信之光&#xff1a…

Python WebSocket自动化测试:构建高效接口测试框架

为了更高效地进行WebSocket接口的自动化测试&#xff0c;我们可以搭建一个专门的测试框架。本文将介绍如何使用Python构建一个高效的WebSocket接口测试框架&#xff0c;并重点关注以下四个方面的内容&#xff1a;运行测试文件封装、报告和日志的封装、数据驱动测试以及测试用例…

深入探索MyBatis的动态代理模式

文章目录 深入探索MyBatis的动态代理模式引言一、 MyBatis动态代理概述动态代理的优势 二、准备工作文件存放结构视图1、Mybatis的主配置文件 mybatis-config.xml2、db.properties文件:3、mybatis-config.xml引用properties文件: 三、MyBatis动态代理的实现原理1. Mapper接口定…

Linux·权限与工具-make

1. Makefile/makefile工具 首先展示一下&#xff0c;makefile工具如何使用。我们先写一个C语言程序 然后我们建立一个Makefile/makefile文件&#xff0c;m大小写均可。我们在文件中写入这样两行 wq保存退出后&#xff0c;我们使用 make 命令 可以看到生成了可执行程序&#xff…

人工智能在Facebook的角色:创新与挑战并存

人工智能&#xff08;AI&#xff09;已经成为推动科技进步的重要力量&#xff0c;而在社交媒体领域&#xff0c;Facebook则是将AI技术广泛应用的先锋。Facebook通过AI来改善用户体验、提高内容质量以及优化广告投放&#xff0c;极大地提升了平台的功能与价值。然而&#xff0c;…

渗透第三次作业

xss game前八关复现 第一关 传参进入h2标签 传入一个alert(1) 发现没有触发&#xff0c;原因是官方禁用了script 选择用img标签 ?somebody<img src1 οnerrοr"alert(1337)"> 第二关 先把它的双引号闭合掉&#xff0c;再执行1337再闭合 ?jeff111";al…

【Python零基础】while循环和用户输入

文章目录 前言一、input()函数二、while循环三、使用while循环来处理列表和字典总结 前言 我们开发一个应用程序&#xff0c;目的都是为了解决最终用户的问题&#xff0c;针对用户界面输入的数据&#xff0c;按照用户期待的逻辑进行处理&#xff0c;得到用户想要的结果。本章将…

Java | Leetcode Java题解之第347题前K个高频元素

题目&#xff1a; 题解&#xff1a; class Solution {public int[] topKFrequent(int[] nums, int k) {Map<Integer, Integer> occurrences new HashMap<Integer, Integer>();for (int num : nums) {occurrences.put(num, occurrences.getOrDefault(num, 0) 1);…

【机器学习】(基础篇六) —— 数据集的划分和过拟合问题

数据集的划分 训练集和测试集 在机器学习中&#xff0c;数据集通常会被划分为训练集&#xff08;Training Set&#xff09;和测试集&#xff08;Test Set&#xff09;&#xff0c;有时还会包括一个验证集&#xff08;Validation Set&#xff09;。这样的划分是为了能够更好地…

SQL 数据库设计、事务、视图 <13>

一、数据库设计 1.多表之间的关系 1&#xff09; 一对一&#xff08;了解&#xff09; 如&#xff1a;人和身份证 分析&#xff1a;一个人只有一个身份证&#xff0c;一个身份证只能对应一个人 2&#xff09;一对多&#xff08;多对一&#xff09; 如&#xff1a;部门和员…