当前位置: 首页 > 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 微信…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...