【Python快速上手(十九)】

目录

  • Python快速上手(十九)
    • Python3 正则表达式
      • 1. 导入re模块
      • 2. 基本匹配
      • 3. 搜索
      • 4. 替换
      • 5. 匹配组
      • 6. 修饰符
      • 7. 特殊字符
      • 8. 贪婪与非贪婪匹配
      • 9. 自定义字符集
      • 10. 转义字符
      • 11.正则表达式实例

Python快速上手(十九)

Python3 正则表达式

Python 3中的正则表达式是一种强大的工具,用于在字符串中搜索和匹配模式。正则表达式是一种由晦涩符号组成的特殊文本模式,可以用来描述、识别和匹配字符串。在Python中,我们可以使用内置的re模块来操作正则表达式。

1. 导入re模块

首先,我们需要导入Python中的re模块,这个模块包含了正则表达式的所有功能。

import re

2. 基本匹配

通过re模块,我们可以使用re.match()函数来尝试从字符串的起始位置匹配一个模式。如果匹配成功,返回一个匹配对象;如果匹配失败,返回None。

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

3. 搜索

re.search()函数用于在字符串中搜索匹配模式的第一个位置。如果匹配成功,返回一个匹配对象;如果匹配失败,返回None。

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

4. 替换

re.sub()函数可以用来替换字符串中的模式。

pattern = r"world"
string = "hello world"
replace = re.sub(pattern, "Python", string)
print(replace)  # Output: hello Python

5. 匹配组

正则表达式中的括号可以用来创建匹配组,可以通过group()方法获取匹配组的值。

pattern = r"(\w+) (\w+)"
string = "John Doe"
match = re.match(pattern, string)
if match:print("First Name:", match.group(1))print("Last Name:", match.group(2))

6. 修饰符

在正则表达式中,可以使用修饰符来修改匹配的行为,比如忽略大小写、多行匹配等。

pattern = r"python"
string = "Python is awesome"
match = re.search(pattern, string, re.IGNORECASE)
if match:print("Match found: ", match.group())

7. 特殊字符

正则表达式中有一些特殊字符具有特殊含义,比如.匹配任意字符,\d匹配数字,\w匹配字母数字字符等。

pattern = r"\d+"
string = "There are 123 apples"
match = re.search(pattern, string)
if match:print("Number found: ", match.group())

8. 贪婪与非贪婪匹配

正则表达式默认是贪婪匹配,会尽可能多地匹配字符。在量词后加上?可以实现非贪婪匹配。

pattern = r"<.*>"
string = "<html><head><title>Title</title>"
match = re.match(pattern, string)
if match:print("Greedy match: ", match.group())pattern = r"<.*?>"
match = re.match(pattern, string)
if match:print("Non-greedy match: ", match.group())

9. 自定义字符集

可以使用[]来定义一个字符集,匹配字符集中的任意一个字符。

pattern = r"[aeiou]"
string = "Hello"
match = re.search(pattern, string)
if match:print("Vowel found: ", match.group())

10. 转义字符

如果想匹配特殊字符本身,需要使用转义字符\。

pattern = r"\$"
string = "Price: $100"
match = re.search(pattern, string)
if match:print("Match found: ", match.group())

11.正则表达式实例

实例描述
[Pp]ython匹配 “Python” 或 “python”
rub[ye]匹配 “ruby” 或 “rube”
[aeiou]匹配中括号内的任意一个字母
[0-9]匹配任何数字。类似于 [0123456789]
[a-z]匹配任何小写字母
[A-Z]匹配任何大写字母
[a-zA-Z0-9]匹配任何字母及数字
[^aeiou]除了aeiou字母以外的所有字符
[^0-9]匹配除了数字外的字符
.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
\d匹配一个数字字符。等价于 [0-9]。
\D匹配一个非数字字符。等价于 [^0-9]。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]'。
\W匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]’。

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

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

相关文章

关于nvm管理node版本的一些问题

背景&#xff1a; 基于开发项目的迭代不能做到全部更新&#xff0c;有的项目是vue2.0 有的项目是vue3.0&#xff0c; 那么我们开发的时候就需要对node 进行更新&#xff0c;进而产生因为版本不同导致的错误&#xff1a;由此我们需要一款管理 切换node版本的东西&#xff0c;那就…

JavaScript 算法题目思考

1. 二叉搜索树是什么 二叉搜索树一种特殊的二叉树数据结构&#xff0c;又称二叉查找树或二叉排序树&#xff0c;是一种特殊的二叉树数据结构。 在二叉搜索树中&#xff0c;左子树上的所有节点的值都小于根节点的值&#xff0c;右子树上的所有节点的值都大于根节点的值&#xff…

C语言 8 函数递归

目录 1. 递归是什么&#xff1f; 2.递归的限制条件 3. 递归举例1 4. 递归举例2 5.迭代 6. 递归举例3 拓展学习&#xff1a; 1. 递归是什么&#xff1f; 递归是学习C语⾔函数绕不开的⼀个话题&#xff0c;那什么是递归呢&#xff1f; 递归其实是⼀种解决问题的⽅法&#xff0c…

0508GoodsContent的Maven项目

0508GoodsContent的Maven项目包-CSDN博客 数据库字段 页面需求

【代码随想录算法训练营第37期 第七天 | LeetCode454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和】

代码随想录算法训练营第37期 第七天 | LeetCode454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和 一、454.四数相加II 解题代码C&#xff1a; class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<in…

ssl证书申请配置要怎么弄?

SSL证书是一种公钥证书&#xff0c;用于保护网站的数据传输过程&#xff0c;确保网站数据的安全性。在网站上使用SSL证书可以有效地防止黑客攻击、窃取用户信息等安全问题。下面将详细介绍SSL证书的申请和配置。 一、SSL证书的申请 1. 选择证书品牌和类型 目前市场上有很多S…

手撸XXL-JOB(四)——远程调用定时任务

Java Socket网络编程 网络编程是Java编程中的重要组成部分&#xff0c;包括服务端和客户端两部分内容。Socket是Java网络编程的基本组件之一&#xff0c;用于在应用程序之间提供双向通信&#xff0c;Socket提供了一种标准的接口&#xff0c;允许应用程序通过网络发送和接收数据…

【递归、回溯和剪枝】综合训练<二>

1.组合总和 组合总和 解法一&#xff1a; class Solution { public:vector<vector<int>> ret;vector<int> path;int aim;vector<vector<int>> combinationSum(vector<int>& nums, int target) {aim target;dfs(nums, 0, 0);return …

华为交换机SSH配置示例

华为交换机支持的SSH和ACL具有关键的安全和配置要求&#xff0c;以确保网络交互的安全性和高效管理。 一、SSH在华为交换机中的原理和配置 SSH技术原理&#xff1a; SSH&#xff08;Secure Shell&#xff09;是一种加密的网络协议&#xff0c;用于在不安全的网络上安全地进行…

【C++】08.string类模拟实现

这篇博客我们来按【C】07.string详解-CSDN博客来模拟实现string类。 目录 一、成员变量 二、构造函数、赋值运算符重载与析构函数 2.1 构造函数 2.2 赋值运算符重载 2.3 析构函数 三、迭代器 3.1 begin() 3.2 end() 四、对容器的操作 4.1 计算字符串的长度与容量 …

LMDI模型详解:环境和能源经济学中的重要工具

引言 在全球面临能源危机和环境挑战的当下&#xff0c;理解和分析能源消耗与碳排放的驱动因素变得尤为重要。LMDI&#xff08;Logarithmic Mean Divisia Index&#xff09;模型作为一种高效的分析工具&#xff0c;在环境和能源经济学中被广泛应用&#xff0c;以评估和解构这些…

ar景区智慧导览系统小程序开发源码搭建

要开发一个AR景区智慧导览系统小程序源码&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. 确定需求和功能&#xff1a;首先&#xff0c;你需要明确你的AR景区智慧导览系统的需求和功能&#xff0c;例如定位、导航、语音导览、虚拟交互、地图展示等。 2. 选择开发平台和…

BOM部分

一&#xff0c;概述 二&#xff0c;Windows对象常见的事件 1.窗口加载事件 上面那个是会等页面都加载完了&#xff0c;在进行函数的调用或者触发事件&#xff0c;如&#xff08;图像&#xff0c;文本&#xff0c;css&#xff0c;js等&#xff09;&#xff0c;所以那个声明可以…

景源畅信数字:抖音热门赛道有哪些?

抖音&#xff0c;作为当下流行的短视频平台&#xff0c;吸引了无数用户和创作者。热门赛道&#xff0c;即平台上受关注度高、活跃用户多的内容领域&#xff0c;是许多内容创作者关注的焦点。这些赛道不仅反映了用户的兴趣偏好&#xff0c;也指引着创作的方向。 一、美食制作与分…

c++构造函数与析构函数

构造函数与析构函数 构造函数 构造函数与类名相同没有返回值&#xff0c;不写void可以重载当创建对象的时候编译器自动调用默认构造函数没有写构造函数的时候编译器会提供一个无参构造 构造函数三种调用方式 括号法 A a(2)显示法A a2;隐式转换法,用explicit可以避免隐式转换…

docker 部署 prometheus + Grafana +

# prometheus安装 # 1.拉镜像 docker pull prom/prometheus:v2.43.0 # 2.创建配置文件 mkdir /opt/prometheus/data cd /opt/prometheus/ vi prometheus.yml # 3.使用root用户启动 docker run --name prometheus -d -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/pro…

企业必看:镭速教你如何测试内网文件传输效率和稳定问题

在现代商业运作中&#xff0c;企业内部文件传输的效率和稳定性对于数据管理和业务流程极为重要。无论是远程工作还是团队协作&#xff0c;高效的文件传输都能显著提升工作效率。今天镭速小编就教你如何测试内网文件传输效率和稳定问题。 1、磁盘性能&#xff0c;即硬盘的读取和…

基于Spring Cloud的房产销售平台设计与实现

基于Spring Cloud的房产销售平台设计与实现 开发语言&#xff1a;Java 框架&#xff1a;SpringCloud JDK版本&#xff1a;JDK1.8 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 前台首页界面&#xff0c;前台首页包括房源信息、…

Airtest核心API汇总

2024.2.25更新&#xff1a;新增剪切板、Airtest1.3.3touch/swipe支持绝对坐标和相对坐标 2023.9.3更新&#xff1a;Airtest1.2.7新增14个断言、断开连接API&#xff1b;Airtest1.2.10.2新增录屏API&#xff1b; 以下基于airtest1.2.0(截止2021.7.12&#xff0c;最新版本) https…

揭秘奇葩环境问题:IDEA与Maven版本兼容性解析

1.问题描述 最近在实现通过Java爬虫获取网页源码&#xff0c;然后紧接着将源码转换为图片上传到OSS服务器&#xff0c;其中探索了很多办法&#xff0c;但是在实现过程中遇到一个奇葩问题&#xff0c;就是我无论下载任何Maven依赖&#xff0c;都无法正常下载&#xff0c;简直是…