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

正则表达式中的特殊字符

正则表达式中的特殊字符

      • 字符类
      • 预定义字符类
      • 量词
      • 锚点
      • 分组和捕获
      • 选择、分支和条件
      • 反义和否定
      • 转义字符
      • 示例

这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。

作者:神的孩子都在歌唱

在正则表达式中,有许多特殊字符用于定义匹配模式。以下是常用的正则表达式特殊字符及其解释。

字符类

  • []:定义字符类,用于匹配方括号内的任意一个字符。
    • 示例:[abc] 匹配 abc
  • -:在字符类中表示范围。
    • 示例:[a-z] 匹配任何小写字母。

预定义字符类

  • .:匹配除换行符外的任意一个字符。
  • \d:匹配任意一个数字,等价于 [0-9]
  • \D:匹配任意一个非数字字符,等价于 [^0-9]
  • \w:匹配任意一个单词字符(字母、数字或下划线),等价于 [a-zA-Z0-9_]
  • \W:匹配任意一个非单词字符,等价于 [^a-zA-Z0-9_]
  • \s:匹配任意一个空白字符(空格、制表符、换行符等)。
  • \S:匹配任意一个非空白字符。

量词

  • *:匹配前面的字符零次或多次。
    • 示例:a* 匹配 ""aaaaaa 等。
  • +:匹配前面的字符一次或多次。
    • 示例:a+ 匹配 aaaaaa 等。
  • ?:匹配前面的字符零次或一次。
    • 示例:a? 匹配 ""a
  • {n}:匹配前面的字符恰好 n 次。
    • 示例:a{3} 匹配 aaa
  • {n,}:匹配前面的字符至少 n 次。
    • 示例:a{2,} 匹配 aaaaaaaaa 等。
  • {n,m}:匹配前面的字符至少 n 次且至多 m 次。
    • 示例:a{2,4} 匹配 aaaaaaaaa

锚点

  • ^:匹配字符串的开始。
    • 示例:^abc 匹配以 abc 开头的字符串。
  • $:匹配字符串的结束。
    • 示例:abc$ 匹配以 abc 结尾的字符串。
  • \b:匹配单词边界。
    • 示例:\bword\b 匹配 word,但不匹配 swordwords
  • \B:匹配非单词边界。
    • 示例:\Bword\B 匹配 swordsmith 中的 word

分组和捕获

  • ():定义分组,并捕获匹配的子字符串。
    • 示例:(abc) 匹配并捕获 abc
  • (?:):定义分组,但不捕获匹配的子字符串。
    • 示例:(?:abc) 匹配但不捕获 abc

选择、分支和条件

  • |:表示选择或分支。
    • 示例:a|b 匹配 ab
  • (?=...):正向前瞻断言,匹配 ... 前的位置。
    • 示例:a(?=b) 匹配 a,但仅当 a 后面跟着 b
  • (?!...):负向前瞻断言,匹配不为 ... 前的位置。
    • 示例:a(?!b) 匹配 a,但仅当 a 后面不跟着 b

反义和否定

  • ^:在字符类中表示反义。
    • 示例:[^abc] 匹配除 abc 之外的任意字符。
  • (?<=...):正向后瞻断言,匹配 ... 后的位置。
    • 示例:(?<=a)b 匹配 b,但仅当 b 前面是 a
  • (?<!...):负向后瞻断言,匹配不为 ... 后的位置。
    • 示例:(?<!a)b 匹配 b,但仅当 b 前面不是 a

转义字符

  • \:用于转义特殊字符,使其作为普通字符处理。
    • 示例:\. 匹配 . 字符,而不是任意字符。

示例

以下是一些示例来展示如何使用上述特殊字符:

import re# 匹配任意单个字符
pattern = re.compile(r'.')
print(pattern.match('a').group())  # 输出: a# 匹配任意数字
pattern = re.compile(r'\d')
print(pattern.match('5').group())  # 输出: 5# 匹配单词边界上的单词
pattern = re.compile(r'\bword\b')
print(pattern.search('A word in a sentence').group())  # 输出: word# 匹配以 abc 开头的字符串
pattern = re.compile(r'^abc')
print(pattern.match('abcde').group())  # 输出: abc# 匹配以 xyz 结尾的字符串
pattern = re.compile(r'xyz$')
print(pattern.search('123xyz').group())  # 输出: xyz# 匹配包含 "hello" 或 "world" 的字符串
pattern = re.compile(r'hello|world')
print(pattern.search('hello world').group())  # 输出: hello# 匹配以数字开头且包含一个或多个空白字符的字符串
pattern = re.compile(r'^\d\s+')
print(pattern.match('5    ').group())  # 输出: 5    # 匹配字符串中的邮箱地址
pattern = re.compile(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b')
print(pattern.search('My email is example@test.com').group())  # 输出: example@test.com

作者:神的孩子都在歌唱

本人博客:https://blog.csdn.net/weixin_46654114

转载说明:务必注明来源,附带本人博客连接。

相关文章:

正则表达式中的特殊字符

正则表达式中的特殊字符 字符类预定义字符类量词锚点分组和捕获选择、分支和条件反义和否定转义字符示例 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 在正则表达式中&#xff0c;有许…...

EP42 公告详情页

文件路径&#xff1a; E:/homework/uniappv3tswallpaper/api/apis.js 先添加相应的api。 import {request } from "/utils/requset.js"export function apiGetBanner() {return request({url: "/homeBanner"}) } export function apiGetDayRandom() {ret…...

游戏找不到xinput1_3.dll的原因及解决方法

1. xinput1_3.dll 基本信息 1.1 文件名 xinput1_3.dll 是一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;它属于 Microsoft DirectX for Windows 的一部分。这个文件主要负责处理与 Xbox 360 控制器和其他兼容 XInput 标准的游戏手柄相关的输入信号&#xff0c;确…...

防反接电路设计

方案1 串联二极管&#xff0c; 优点&#xff1a;成本低、设计简单 缺点&#xff1a;损耗大&#xff0c;P ui 方案2 串联自恢复保险丝 当电源反接的时候&#xff0c;D4导通&#xff0c;F2超过跳闸带你留&#xff0c;就会断开&#xff0c;从而保护了后级电路 方案3 H桥电路…...

SpringMVC源码-AbstractHandlerMethodMapping处理器映射器将@Controller修饰类方法存储到处理器映射器

SpringMVC九大内置组件之HandlerMapping处理器映射器-AbstractHandlerMethodMapping类以及子类RequestMappingHandlerMapping如何将Controller修饰的注解类以及类下被注解RequestMapping修饰的方法存储到处理器映射器中。 从RequestMappingHandlerMapping寻找: AbstractHandle…...

毕业设计选题:基于ssm+vue+uniapp的购物系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

【动态规划-最长公共子序列(LCS)】力扣583. 两个字符串的删除操作

给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 “sea”, word2 “eat” 输出: 2 解释: 第一步将 “sea” 变为 “ea” &#xff0c;第二步将 "e…...

【分布式微服务云原生】8分钟探索RPC:远程过程调用的奥秘与技术实现

摘要 在分布式系统中&#xff0c;RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;技术是连接各个组件的桥梁。本文将深入探讨RPC的概念、技术实现原理、以及请求处理的详细过程。通过清晰的结构、流程图、代码片段和图表&#xff0c;我们将一起揭开…...

Linux操作系统中Redis

1、什么是Redis Redis&#xff08;Remote Dictionary Server &#xff09;&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 可以理解成一个大容量的map。…...

每日论文5—06TCAS2锁相环电流匹配的gain-boosting电荷泵

《Gain-Boosting Charge Pump for Current Matching in Phase-Locked Loop》 06TCAS2 本质上和cascode来增加输出电阻&#xff0c;从而减小电流变化的思路是一样的。这里用了放大器来增加输出电阻。具体做法如下图&#xff1a; 如图1(a)&#xff0c;A3把Vb和Vx拉平&#xff0…...

接口隔离原则(学习笔记)

客户端不应该被迫依赖于它不使用的方法&#xff1a;一个类对另一个类的依赖应该建立在最小的接口上。 上面的设计我们发现他存在的问题&#xff0c;黑马品牌的安全门具有防盗&#xff0c;防水&#xff0c;防火的功能。现在如果我们还需要再创建一盒传智品牌的安全门&#xff0c…...

基于ESP8266—AT指令连接阿里云+MQTT透传数据(1)

在阿里云创建MQTT产品的过程涉及几个关键步骤,主要包括注册阿里云账号、实名认证、开通MQTT服务实例、创建产品与设备等。以下是详细的步骤说明: 一、准备工作 访问阿里云官网,点击注册按钮,填写相关信息(如账号、密码、手机号等)完成注册。注册完成后,需要对账号进行实…...

强化学习-python案例

强化学习是一种机器学习方法&#xff0c;旨在通过与环境的交互来学习最优策略。它的核心概念是智能体&#xff08;agent&#xff09;在环境中采取动作&#xff0c;从而获得奖励或惩罚。智能体的目标是最大化长期奖励&#xff0c;通过试错的方式不断改进其决策策略。 在强化学习…...

Element UI教程:如何将Radio单选框的圆框改为方框

大家好&#xff0c;今天给大家带来一篇关于Element UI的使用技巧。在项目中&#xff0c;我们经常会用到Radio单选框组件&#xff0c;默认情况下&#xff0c;Radio单选框的样式是圆框。但有时候&#xff0c;为了满足设计需求&#xff0c;我们需要将圆框改为方框&#xff0c;如下…...

vue3结合 vue-router和keepalive实现路由跳转保持滚动位置不改变(超级简易清晰)

1.首先我们在路由跳转页面设置keepalive(Seeall是我想实现结果的页面) 2. 想实现结果的页面中如果不是全屏实现滚动而是有单独的标签实现滚动效果...

PostgreSQL 字段使用pglz压缩测试

PostgreSQL 字段使用pglz压缩测试 测试一&#xff1a; 创建测试表 yewu1.test1&#xff0c;并插入1000w行数据 创建测试表 yewu1.test2&#xff0c;使用 pglz压缩字段&#xff0c;并插入1000w行数据–创建测试表1&#xff0c;并插入1000w行数据 white# create table yewu1.t…...

基于大数据的学生体质健康信息系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

【STM32】 TCP/IP通信协议(1)--LwIP介绍

一、前言 TCP/IP是干啥的&#xff1f;它跟SPI、IIC、CAN有什么区别&#xff1f;它如何实现stm32的通讯&#xff1f;如何去配置&#xff1f;为了搞懂这些问题&#xff0c;查询资料可解决如下疑问&#xff1a; 1.为什么要用以太网通信? 以太网(Ethernet) 是指遵守 IEEE 802.3 …...

828华为云征文|部署音乐流媒体服务器 mStream

828华为云征文&#xff5c;部署音乐流媒体服务器 mStream 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 mStream3.1 mStream 介绍3.2 mStream 部署3.3 mStream 使用 四、…...

【动态规划-最长公共子序列(LCS)】力扣712. 两个字符串的最小ASCII删除和

给定两个字符串s1 和 s2&#xff0c;返回 使两个字符串相等所需删除字符的 ASCII 值的最小和 。 示例 1: 输入: s1 “sea”, s2 “eat” 输出: 231 解释: 在 “sea” 中删除 “s” 并将 “s” 的值(115)加入总和。 在 “eat” 中删除 “t” 并将 116 加入总和。 结束时&…...

Gemma-3-12b-it镜像免配置实战:单命令启动多模态服务并集成Flask API

Gemma-3-12b-it镜像免配置实战&#xff1a;单命令启动多模态服务并集成Flask API 1. 快速了解Gemma-3-12b-it多模态能力 Gemma-3-12b-it是Google推出的轻量级多模态模型&#xff0c;它最大的特点就是能同时理解文字和图片。想象一下&#xff0c;你给它一张照片&#xff0c;它…...

PvZ Toolkit:植物大战僵尸资源管理与战局调控综合解决方案

PvZ Toolkit&#xff1a;植物大战僵尸资源管理与战局调控综合解决方案 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 在植物大战僵尸的游戏世界里&#xff0c;玩家常常面临阳光短缺、金币不足的困…...

硬件医生养成记:用SMUDebugTool守护AMD Ryzen系统健康

硬件医生养成记&#xff1a;用SMUDebugTool守护AMD Ryzen系统健康 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…...

西门子触摸屏报警处理:除了弹窗,用这个‘非中断式’方法让产线更丝滑

西门子HMI非中断报警系统设计&#xff1a;让产线效率提升30%的实战方案 在快节奏的工业现场&#xff0c;每一次操作中断都意味着产能的隐形流失。传统HMI报警弹窗就像突然按下的暂停键——操作员必须停下手中任务去点击确认&#xff0c;而流水线上的产品仍在流动。这种矛盾在汽…...

Qt串口开发避坑指南:从QSerialPort基础到实战封装,解决粘包和跨平台问题

Qt串口开发避坑指南&#xff1a;从QSerialPort基础到实战封装 1. 串口开发的典型痛点与解决思路 嵌入式开发中&#xff0c;串口通信就像一位性格古怪的老朋友——看似简单却暗藏玄机。许多开发者第一次使用Qt的QSerialPort类时&#xff0c;往往会被其简洁的API迷惑&#xff0c;…...

Parallax三线LCD Arduino驱动库详解

1. 项目概述 Parallax LCD 是一个专为驱动 Parallax 公司三线制串行 LCD 模块设计的轻量级 Arduino 库。该库不依赖标准 HD44780 并行接口协议&#xff0c;而是针对 Parallax 自研的 3 线串行通信协议&#xff08;TX、GND、VDD&#xff09;进行底层适配&#xff0c;显著降低 GP…...

TouchGal Galgame社区完整指南:打造你的二次元游戏乐园

TouchGal Galgame社区完整指南&#xff1a;打造你的二次元游戏乐园 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next TouchGal是一个专…...

线性代数小白必看:孔祥仁网课笔记整理(附二阶到n阶行列式详解)

线性代数入门&#xff1a;从二阶行列式到n阶行列式的完整指南 第一次接触线性代数时&#xff0c;行列式这个概念就像一堵高墙挡在面前。记得我大一时&#xff0c;光是理解二阶行列式的几何意义就花了整整一周时间。直到后来遇到一位好老师&#xff0c;用简单的例子帮我打通了任…...

FreeRTOS实战:基于串口空闲中断与二值信号量构建高效数据接收框架

1. 串口通信的痛点与解决方案 在嵌入式开发中&#xff0c;串口通信是最基础也最常用的外设之一。但处理不定长数据时&#xff0c;很多开发者会遇到这样的困扰&#xff1a;要么频繁进入接收中断导致CPU负载过高&#xff0c;要么需要手动设置数据包长度增加协议复杂度。我在早期项…...

C语言回调函数原理与实战应用指南

C语言回调函数深度解析与实践应用1. 函数指针基础1.1 函数指针概念函数指针是指向函数的指针变量&#xff0c;与普通指针变量不同&#xff0c;它指向的是代码区而非数据区。标准定义形式为&#xff1a;返回值类型 (*指针变量名)(参数类型列表);关键特征&#xff1a;指针变量名必…...