正则表达式 速成
正则表达式的作用
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。
如何快速上手?
1、打开 学习、构建和测试正则表达式网址:RegExr: Learn, Build, & Test RegEx
2.我们点开Cheatsheet(备忘单)
可以看到一共分成了五个部分
字符类:
表达式 | 含义 |
---|---|
. | 任何字符(除换行符外) |
\w \d \s | 单词、数字、空格 |
\W \D \S | 非(词、数字、空格) |
[abc] | a、b或c中的任何一个 |
[^abc] | 非 a、b或c |
[a-g] | a到g之间的字符 |
锚点定位:
表达式 | 含义 |
---|---|
^abc$ | 字符串的开头/结尾 |
\b \B | 单词边界字符、单词非边界字符 |
转义字符:
表达式 | 含义 |
---|---|
\. \* \\ | 如果需要匹配它们本身而不是它们的特殊含义,则需要在它们前面加上反斜杠 '\' 进行转义 |
\t \n \r | tab ,换行,回车 |
组和环:
表达式 | 含义 |
---|---|
(abc) | 捕获组 |
\1 | 对组#1的反向引用 |
(?:abc) | 非捕获组 |
(?=abc) | 正向前看 |
(?!abc) | 负向前看 |
词量与交替:
表达式 | 含义 |
---|---|
a*a+a? | 0 个或多个、1 个或多个、0 或 1 个 |
a{5}a{2,} | 恰好五个、两个或更多 |
a{1,3} | 一到三之间 |
a+?a{2,}? | 尽可能少的匹配 |
ab|cd | 匹配 ab 或 cd |
表达式介绍完了,我们举个例子来使用一下这些内容:
Unity的Animator有这么一个接口
public void Play(string stateName, [DefaultValue("-1")] int layer, [DefaultValue("float.NegativeInfinity")] float normalizedTime)
我们希望在代码中调用的地方全部改为自身定义的 PlayAnimation
public class AnimCacheManager
{public static void PlayAnimation(Animator animator, string animationName, int layer = -1, float normalizedTime = 0,float speed = 1){if (animator == null){return;}animator.speed = speed/MatchSpeedMgr.Instance.SpeedValue;animator.Play(animationName, layer, normalizedTime);}
}
首先我们需要找到.Play前的字符串,因为变量名可以有数字所以
- 用 \S可以表示配空字符,
- 用组()和 * 表示一个或者多个字符组组成的变量名
(\S*)\.Play
接下来就是匹配括号里的内容了
首先补齐 ();应为(是组符号,所以匹配(自生就需要 \转义 得出 (\S*)\.Play\(\);
Play()括号中有 :,数字,字符,所以我们可以匹配 任何字符(除换行符外)可以使用 .* ,然后用组 ()组合 得出(.*)
加入到上面的正则表达式中就有:
(\S*)\.Play\((.*)\);
筛选出来符合的字符串之后就是替换成我们自己的接口字符串:
AnimCacheManager.PlayAnimation($1,$2);
$1 表示匹配的第一个组 : (\S*)
$2 表示匹配的第二个组 :(.*)
我们拿 JetBrains Rider 来做测试:
可以看出,字符串替换成功。
总结:
1.我这边举的例子算比较复杂的,但是拆解之后可以看出并不难
2.当你不理解含义的时候直接点击参考理解即可:
3.合理的使用正则表达式到工作中可以大大的提高工作效率
4.正则表达式回了就不难
5.不用死背表达式,忘了就来网址上找就行
相关文章:

正则表达式 速成
正则表达式的作用 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字…...
21、Lua 面向对象
Lua 面向对象 Lua 面向对象面向对象特征Lua 中面向对象一个简单实例创建对象访问属性访问成员函数完整实例 Lua 继承完整实例 函数重写 Lua 面向对象 面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。 以下…...
openssl3.2 - exp - class warp for sha3-512
文章目录 openssl3.2 - exp - class warp for sha3-512概述笔记调用方代码子类 - cipher_sha3_512.h子类 - cipher_sha3_512.cpp基类 - cipher_md_base.h基类 - cipher_md_base.cpp备注END openssl3.2 - exp - class warp for sha3-512 概述 前面实验整了一个对buffer进行sha…...

cog predict docker unknown flag: --file
如图: 使用cog predict -i image“link-to-image” 出现docker unknown flag: --file的问题。 解决方法(对我可行):切换cog版本。 这个是我一开始的cog安装命令(大概是下的最新版?)࿱…...
SpringMVC接收参数方式讲解
PathVariable 该注解用于接收具有Restful风格的参数,如/api/v1/1001,最终userId的值为1001。 如下代码中,使用name属性可以指定GetMapping中的id名称与之对应,从而可以自定义参数名称userId,而不是使用默认名称id G…...
JavaScript 中arguments 对象详细解析与案例
在JavaScript中,每个函数都有一个内部对象arguments,它包含了函数调用时传递的所有参数。arguments对象类似一个数组,但是它并不是真正的数组,它没有数组的方法,只有length属性和索引访问元素的能力。 以下是对argume…...

消除 BEV 空间中的跨模态冲突,实现 LiDAR 相机 3D 目标检测
Eliminating Cross-modal Conflicts in BEV Space for LiDAR-Camera 3D Object Detection 消除 BEV 空间中的跨模态冲突,实现 LiDAR 相机 3D 目标检测 摘要Introduction本文方法Single-Modal BEV Feature ExtractionSemantic-guided Flow-based AlignmentDissolved…...

【免安装的MATLAB--MATLAB online】
目录: 前言账号的注册图片处理的示例准备图片脚本函数 总结 前言 在计算机、数学等相关专业中,或多或少都会与MATLAB产生藕断丝连的联系,如果你需要使用MATLAB,但是又不想要安装到自己的电脑上(它实在是太大了啊&#…...

Flyway 数据库版本管理
一、Flyway简介 Flyway是一款开源的数据库迁移工具,可以管理和版本化数据库架构。通过Flyway,可以跟踪数据库的变化,并将这些变化作为版本控制的一部分。Flyway支持SQL和NoSQL数据库,并且可以与现有的开发流程无缝集成࿰…...

lua学习笔记19(面相对象学习的一点总结)
print("*****************************面相对象总结*******************************") object{} --实例化方法 function object:new()local obj{}self.__indexselfsetmetatable(obj,self)return obj end-------------------------如何new一个对象 function object:…...

视觉SLAM学习打卡【10】-后端·滑动窗口法位姿图
本节是对上一节BA的进一步简化,旨在提高优化实时性.难点在于位姿图部分的雅可比矩阵求解(涉及李代数扰动模型求导),书中的相关推导存在跳步(可能数学功底强的人认为过渡的理所当然),笔者参考了知…...

【动态规划 区间dp 位运算】100259. 划分数组得到最小的值之和
本文涉及知识点 动态规划 区间dp 位运算 LeetCode100259. 划分数组得到最小的值之和 给你两个数组 nums 和 andValues,长度分别为 n 和 m。 数组的 值 等于该数组的 最后一个 元素。 你需要将 nums 划分为 m 个 不相交的连续 子数组,对于第 ith 个子数…...

CSS核心样式-02-盒模型属性及扩展应用
目录 三、盒模型属性 常见盒模型区域 盒模型图 盒模型五大属性 1. 宽度 width 2. 高度 height 3. 内边距 padding 四值法 三值法 二值法 单值法 案例 4. 边框 border 按照属性值的类型划分为三个单一属性 ①线宽 border-width ②线型 border-style ③边框颜色 bo…...

在 Google Cloud 上轻松部署开放大语言模型
今天,“在 Google Cloud 上部署”功能正式上线! 这是 Hugging Face Hub 上的一个新功能,让开发者可以轻松地将数千个基础模型使用 Vertex AI 或 Google Kubernetes Engine (GKE) 部署到 Google Cloud。 Model Garden (模型库) 是 Google Clou…...

005Node.js模块URL的使用
引入 URL 模块 要使用 URL 模块,首先需要在代码中引入它。可以使用以下代码将 URL 模块导入到你的脚本中: const url require(url);实例代码 const urlrequire(url); var apihttp://www.baidu.com?nameshixiaobin&age20; console.log(url.parse(…...

美团笔试复盘
昨天做了美团的笔试,现在复盘一下。 1、将数组按照绝对值大小排序 有道算法题解决思路需要将数组按照绝对值大小进行排序,我使用的是sort方法Comparator比较器实现的,这里记录一下: public static void main(String[] args) {In…...

IntelliJ IDEA - Since Maven 3.8.1 http repositories are blocked
问题描述 新下载的 IDEA 在构建项目时,在下载引用的包时出现 “Since Maven 3.8.1 http repositories are blocked” 的问题。 原因分析 从 Maven 3.8.1 开始,不再支持 http 的包了。由于现在对网络安全的日益重视,都在向 https 转变&#…...
Django的APP应用更名(重命名)流程
将Django中的一个现有APP更名是一个需要谨慎操作的过程,因为它涉及到多个文件和配置的更新。下面是详细的步骤和一些补充细节,帮助你更顺利地完成APP重命名: 1. 修改APP名称及相关引用 更改APP目录名称: 首先,重命名…...

ChatGLM3-6B大语言模型离线执行
ChatGLM3-6B大语言模型离线执行 模型准备 一般而言,模型和模型参数可以通过如下三个模型源进行相应的下载: HuggingFace | ModelScope | WiseModel 本实例中,使用的是HuggingFace的源下载,相应的地址如下: HuggingFa…...

了解大语言模型的参数高效微调(Parameter-Effcient Fine-Tuning)
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 大语言模型在众多应用领域实现了突破性的进步,显著提升了各种任务的完成度。然而,其庞大的规模也带来了高昂的计算成本。这些模型往往包含数十亿甚至上千亿参数,需要…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...