当前位置: 首页 > news >正文

Python 正则表达式常用特殊字符及其含义

以下是 Python 正则表达式常用特殊字符及其含义 的全面整理,涵盖了常见和重要的正则符号,以及它们的示例,适合用来写博客或学习使用:


Python 正则表达式常用特殊字符及其含义

1. . (点号)

  • 含义:匹配除换行符 \n 以外的任意单个字符。
  • 示例
    import re
    pattern = r"a.b"
    print(re.match(pattern, "acb"))  # 匹配成功,"a.b" 中间任意字符
    print(re.match(pattern, "a\nb")) # 不匹配,中间是换行符
    

2. ^ (脱字符)

  • 含义:匹配字符串的开头。
  • 示例
    pattern = r"^Hello"
    print(re.match(pattern, "Hello world"))  # 匹配成功
    print(re.match(pattern, "world Hello"))  # 不匹配
    

3. $ (美元符)

  • 含义:匹配字符串的结尾。
  • 示例
    pattern = r"world$"
    print(re.search(pattern, "Hello world"))  # 匹配成功
    print(re.search(pattern, "Hello world!")) # 不匹配
    

4. * (星号)

  • 含义:匹配前面的字符零次或多次。
  • 示例
    pattern = r"ab*"
    print(re.match(pattern, "a"))     # 匹配成功,b 出现零次
    print(re.match(pattern, "abbb"))  # 匹配成功,b 出现多次
    

5. + (加号)

  • 含义:匹配前面的字符一次或多次。
  • 示例
    pattern = r"ab+"
    print(re.match(pattern, "ab"))    # 匹配成功,b 出现一次
    print(re.match(pattern, "a"))     # 不匹配,至少需要一个 b
    

6. ? (问号)

  • 含义:匹配前面的字符零次或一次。
  • 示例
    pattern = r"ab?"
    print(re.match(pattern, "a"))     # 匹配成功,b 出现零次
    print(re.match(pattern, "ab"))    # 匹配成功,b 出现一次
    print(re.match(pattern, "abb"))   # 不匹配,b 出现两次
    

7. {n}, {n,}, {n,m} (量词限定符)

  • 含义
    • {n}:匹配前一个字符恰好 n 次。
    • {n,}:匹配至少 n 次。
    • {n,m}:匹配至少 n 次,至多 m 次。
  • 示例
    pattern = r"ab{2,4}"
    print(re.match(pattern, "abb"))     # 匹配成功,b 出现 2 次
    print(re.match(pattern, "abbbb"))   # 不匹配,b 超过 4 次
    

8. [...] (字符类)

  • 含义:匹配方括号内的任意字符。
    • [a-z]:表示范围,匹配从 az 的任意字符。
    • [^...]:取反,匹配不在方括号内的任意字符。
  • 示例
    pattern = r"[aeiou]"
    print(re.match(pattern, "apple"))   # 匹配成功,匹配元音字母 'a'pattern2 = r"[^aeiou]"
    print(re.match(pattern2, "hello"))  # 匹配 'h',不是元音字母
    

9. - (连字符/减号)

  • 含义:在字符类中,表示范围。
    • [a-z]:从 az
    • [A-Z]:从 AZ
    • [-]:如果 - 出现在开头或结尾,匹配减号本身。
  • 示例
    pattern = r"[a-z0-9]"
    print(re.match(pattern, "5"))       # 匹配成功,数字在范围内
    print(re.match(pattern, "g"))       # 匹配成功,字母在范围内
    

10. | (管道符)

  • 含义:表示逻辑 "或",匹配左边或右边的规则。
  • 示例
    pattern = r"cat|dog"
    print(re.match(pattern, "cat"))    # 匹配成功
    print(re.match(pattern, "dog"))    # 匹配成功
    

11. () (分组和捕获)

  • 含义:将多个字符作为一个整体进行匹配,并捕获组内容。
  • 示例
    pattern = r"(ab)+"
    print(re.match(pattern, "abab"))    # 匹配成功
    

12. \ (反斜杠)

  • 含义:用于转义特殊字符,或表示特殊的匹配序列。
    • \d:匹配数字 [0-9]
    • \s:匹配空白字符(如空格、制表符)。
    • \w:匹配字母、数字和下划线 [a-zA-Z0-9_]
    • \D\S\W:与上述序列的反义。
  • 示例
    pattern = r"\d+"
    print(re.match(pattern, "12345"))   # 匹配成功
    print(re.match(pattern, "abc"))     # 不匹配
    

13. \b\B (单词边界)

  • \b:匹配单词边界。
  • \B:匹配非单词边界。
  • 示例
    pattern = r"\bcat\b"
    print(re.search(pattern, "a cat sat"))    # 匹配成功,完整的单词 'cat'pattern2 = r"cat\B"
    print(re.search(pattern2, "concatenate")) # 匹配成功,'cat' 后非边界
    

14. 零宽断言 (Lookaround)

  • (?=...):正向肯定预查。
  • (?!...):正向否定预查。
  • (?<=...):后向肯定预查。
  • (?<!...):后向否定预查。
  • 示例
    pattern = r"(?<=\$)\d+"
    print(re.search(pattern, "价格是$100"))  # 匹配 '100',不包括 '$'
    

15. 命名组和引用

  • (?P<name>...):定义命名分组。
  • (?P=name):引用命名分组。
  • 示例
    pattern = r"(?P<number>\d+)\s+(?P=number)"
    print(re.match(pattern, "123 123"))  # 匹配两个相同的数字
    

以上内容全面涵盖了 Python 正则表达式中的常用特殊字符及其含义,并结合示例展示了每个符号的实际用法,适合用于博客或深入学习。

相关文章:

Python 正则表达式常用特殊字符及其含义

以下是 Python 正则表达式常用特殊字符及其含义 的全面整理&#xff0c;涵盖了常见和重要的正则符号&#xff0c;以及它们的示例&#xff0c;适合用来写博客或学习使用&#xff1a; Python 正则表达式常用特殊字符及其含义 1. . (点号) 含义&#xff1a;匹配除换行符 \n 以外…...

Uniapp Android SpringBoot3 对接支付宝支付(最新教程附源码)

Uniapp Android SpringBoot3 对接支付宝支付&#xff08;最新教程附源码&#xff09; 1、效果展示2、后端实现2.1 引入支付宝SDK依赖 pom.xml2.2 配置 application.yml2.3 支付宝相关代码2.3.1 AlipayConfig.java2.3.2 ZfbPayConfig.java2.3.3 支付接口2.3.4 支付回调处理接口&…...

SQL DML 语句

CREATE TABLE classes (ClassID varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 班级ID,ClassName varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 班级名称,TeacherID varchar(20) CHARACTER SET utf8mb4…...

饲料颗粒机全套设备有哪些机器组成

颗粒饲料机主要用于将各种饲料原料&#xff08;如玉米、豆粕、麦麸、鱼粉等&#xff09;进行混合、压制&#xff0c;制成颗粒状的饲料。这种饲料不仅方便储存和运输&#xff0c;还能提高动物的采食效率和饲料利用率。同时&#xff0c;颗粒饲料在加工过程中能灭部分微生物和寄生…...

MySQL事务与锁

定义一个事务向d_eams数据库的student表中插入3条记录&#xff0c;并检验若插入相同的学号&#xff0c;则回滚事务&#xff0c;既插入无效&#xff0c;否则成功提交 delimiter $$ create procedure tr_proc() begindeclare continue handler for sqlstate 23000beginrollback;…...

汽车免拆案例 | 2007款宝马650i车发动机偶尔无法起动

故障现象 一辆2007款宝马650i车&#xff0c;搭载N62B48B发动机&#xff0c;累计行驶里程约为26万km。车主反映&#xff0c;发动机偶尔无法起动&#xff0c;故障频率较低&#xff0c;十几天出现1 次&#xff0c;且故障出现时起动机不工作。 故障诊断  接车后试车&#xff0c;…...

PostgreSQL和Oracle的sql差异

PostgreSQL和Oracle的sql差异 1.rownum &#xff08;1&#xff09;Oracle分页查询使用rownum&#xff0c;PostgreSQL使用limit offset ORACLEPOSTGRESQLselect * from (select rownum r,e.* from emp e where rownum <5) t where r>0;select * from emp limit 5 offset…...

SpringMvc完整知识点二(完结)

SpringMVC获取请求参数 环境准备工作等均省略&#xff0c;可详见快速入门&#xff0c;此处只写非共有部分代码 该部分示例项目SpringMvcThree已上传至Gitee&#xff0c;可自行下载 客户端请求参数的格式为&#xff1a;namevalue&passwordvalue... ... 服务端想要获取请求…...

29 - Java Serializable 序列化

Java的Serializable接口是Java序列化机制的核心&#xff0c;它允许一个对象的状态被转换为字节流&#xff0c;从而可以方便地进行存储或传输。 序列化后的对象可以被写到数据库、存储到文件系统&#xff0c;或者通过网络传输。 要在 Java 中使一个类可序列化&#xff0c;你需要…...

59 基于STM32的烟雾、红外、温湿度检测

所有仿真详情导航: PROTEUS专栏说明-CSDN博客 目录 一、主要功能 二、硬件资源 三、主程序编程 四、资源下载 一、主要功能 基于SMT32F103C8T6单片机,采用DHT11检测温湿度,采用光敏电阻检测光照,采用滑动变阻器分别模拟红外、烟雾,通过OLED显示屏显示,如果湿度过低…...

使用Excel 对S型曲线加减速算法进行仿真

项目场景&#xff1a; 项目场景&#xff1a;代码中写了S型加减速算法&#xff0c;相查看生成的加减速数组&#xff0c;直观的展示出来&#xff0c;USB通信一次64字节&#xff0c;对于我几个个32位的频率值不太方便&#xff0c;于是采用Excel进行仿真。 代码中如何生成S加减速曲…...

flink-connector-mysql-cdc:01 mysql-cdc础配置代码演示

flink-connector-mysql-cdc&#xff1a; 01 mysql-cdc基础配置代码演示02 mysql-cdc高级扩展03 mysql-cdc常见问题汇总04 mysql-cdc-kafka生产级代码分享05 flink-kafka-doris生产级代码分享06 flink-kafka-hudi生产级代码分享 flink-cdc版本&#xff1a;3.2.0 flink版本&…...

java计算机毕设课设—进销存管理系统(附源码、文章、相关截图、部署视频)

这是什么系统&#xff1f; 资源获取方式再最下方 java计算机毕设课设—进销存管理系统(附源码、文章、相关截图、部署视频) 一、项目简介 项目名称&#xff1a; 基于Java的进销存管理系统 开发背景&#xff1a; 在现代企业管理中&#xff0c;库存管理是核心环节之一&#…...

鸿蒙UI开发——渐变色效果

1、概 述 ArkTs可以通过颜色渐变接口&#xff0c;设置组件的背景颜色渐变效果&#xff0c;实现在两个或多个指定的颜色之间进行平稳的过渡。 目前提供三种渐变类型&#xff1a;线性渐变、角度渐变、径向渐变。 我们在鸿蒙UI布局实战 —— 个人中心页面开发中&#xff0c;默认…...

嵌入式硬件设计 — 智能设备背后的隐形架构大师

目录 引言 一、嵌入式硬件设计概述 &#xff08;一&#xff09;需求分析 &#xff08;二&#xff09;硬件选型 &#xff08;三&#xff09;电路设计 &#xff08;四&#xff09;PCB 制作与焊接 &#xff08;五&#xff09;硬件调试与测试 &#xff08;六&#xff09;软…...

QNX的系统资源访问机制

资料参考: QNX官网文档 在QNX中,一些系统的资源默认是无法访问的,或者可访问的范围过大,导致产生不可控的危险,此时便需要对系统资源进行访问限制 接口如下 #include <sys/rsrcdbmgr.h> #include <sys/rsrcdbmsg.h>int rsrcdbmgr_create(...

高校数字化运营平台解决方案:构建统一的服务大厅、业务平台、办公平台,助力打造智慧校园

教育数字化是建设教育强国的重要基础&#xff0c;利用技术和数据助推高校管理转型&#xff0c;从而更好地支撑教学业务开展。 近年来&#xff0c;国家多次发布政策&#xff0c;驱动教育行业的数字化转型。《“十四五”国家信息化规划》&#xff0c;推进信息技术、智能技术与教育…...

多模态大型语言模型MM-1.5采用数据驱动的方法,通过不断优化数据组合提高模型性能

多模态大型语言模型MM-1.5采用数据驱动的方法&#xff0c;通过不断优化数据组合提高模型性能 MM-1.5模型的设计核心在于其数据驱动的方法&#xff0c;这意味着模型的性能在很大程度上取决于所使用的数据类型和组合。这种方法的实施细节可以从以下几个方面来展开&#xff1a; …...

16 设计模式之适配器模式(充电器转换案例)

一、适配器模式的定义 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;常用于解决接口不兼容的问题。适配器模式通过引入一个“适配器”类&#xff0c;将一个接口转化为客户端期望的另一种接口&#xff0c;使得原本因接口不兼容而无法交互…...

基于Java Springboot在线招聘APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…...

太阳能电池阵列监测实战:用AMC1301搞定200V共模电压下的单体电压采集

太阳能电池阵列单体电压监测&#xff1a;基于AMC1301的高压隔离采集方案设计指南 光伏电站的电池阵列通常由数十至数百块单体电池串联组成&#xff0c;系统电压可达600-1500V。在这种高压堆叠场景下&#xff0c;如何准确监测每块单体电池的电压&#xff08;通常仅0.5-0.7V&…...

ASan实战:5种常见内存错误诊断与修复指南(附GCC/Clang编译命令)

ASan实战&#xff1a;5种常见内存错误诊断与修复指南&#xff08;附GCC/Clang编译命令&#xff09; 在C/C开发中&#xff0c;内存错误如同潜伏的暗礁&#xff0c;随时可能让程序沉没。AddressSanitizer&#xff08;ASan&#xff09;作为Google推出的内存错误检测工具&#xff…...

深入排查k8s集群6443端口连接拒绝:从kubectl故障到系统级修复

1. 当kubectl突然罢工&#xff1a;6443端口连接拒绝的紧急处理 那天早上我像往常一样打开终端&#xff0c;准备用kubectl get pods查看集群状态&#xff0c;结果终端冷冰冰地抛出一行错误&#xff1a;"Unable to connect to the server: dial tcp 192.168.1.1:6443: conne…...

推荐系统优化秘籍:如何用Metric Learning解决冷启动问题?

推荐系统优化秘籍&#xff1a;如何用Metric Learning解决冷启动问题&#xff1f; 在推荐系统领域&#xff0c;冷启动问题一直是困扰算法工程师和产品经理的核心挑战之一。新用户缺乏历史行为数据&#xff0c;新商品没有足够的曝光记录&#xff0c;传统协同过滤方法在这些场景下…...

IEC102协议报文解析:从格式到传输的实战指南

1. IEC102协议基础入门&#xff1a;电力系统的"语言密码" 第一次接触IEC102协议时&#xff0c;我完全被那些十六进制代码和术语搞晕了。直到有一次在变电站调试电表&#xff0c;看到主站和终端设备用这种"暗号"流畅对话&#xff0c;才真正理解它的价值。简…...

【AI黑话日日新】什么是大语言模型驱动的代码生成技术?

摘要 生成式人工智能的快速普及,重塑了传统软件开发的全链路流程。大语言模型(LLM)凭借海量语料预训练与深度语义理解能力,成为智能代码生成的核心底座。这项技术打通了自然语言与编程语言的语义壁垒,能够实现代码续写、需求转源码、自动化测试、系统重构等多元化能力,帮…...

终极指南:如何将Kubernetes metrics-server日志高效导出到S3与GCS

终极指南&#xff1a;如何将Kubernetes metrics-server日志高效导出到S3与GCS 【免费下载链接】metrics-server Scalable and efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines. 项目地址: https://gitcode.com/gh_mirrors/me…...

Faster-Whisper架构解析:基于CTranslate2的高性能语音识别优化方案

Faster-Whisper架构解析&#xff1a;基于CTranslate2的高性能语音识别优化方案 【免费下载链接】faster-whisper plotly/plotly.js: 是一个用于创建交互式图形和数据可视化的 JavaScript 库。适合在需要创建交互式图形和数据可视化的网页中使用。特点是提供了一种简单、易用的 …...

聊聊永磁同步电机里的那点“扰动“破事

两种负载扰动观测器设计思路&#xff0c;pmsm仿真 仿真基于离散模型&#xff0c;观测器设计基于m文件&#xff0c;方便移植到c验证 包含&#xff1a;&#xff08;1&#xff09;1.5延时补偿&#xff08;2&#xff09;扩张龙伯格扰动观测器&#xff08;ESO&#xff09;设计&#…...

Vue+DataV+Echarts实战:从零搭建企业级数据可视化大屏(附完整代码)

1. 环境准备与项目初始化 数据可视化大屏开发的第一步是搭建基础开发环境。这里我推荐使用Vue CLI作为项目脚手架&#xff0c;它能帮我们快速初始化一个规范的Vue项目结构。先确保你的系统已安装Node.js&#xff08;建议LTS版本&#xff09;&#xff0c;然后在终端执行以下命令…...