学习正则(第一天)字符匹配

简介: 学习正则(第一天)字符匹配

01. 可以干什么?


  1. 匹配模式
  2. 匹配字符
  3. 匹配位置


02. 模糊匹配-横向匹配


待匹配的字符长度不固定,关联概念为量词({m,n}),表示某个字符重复出现m~n次后被命中。

正则:/hel{1,2}o/gm

1.png

说明:待匹配的字符串内容命中规则为heo中间包含最少1个l和做多2两个l

匹配正例:helohello

匹配反例:heo``helllo

2.png


03. 模糊匹配-纵向匹配


待匹配的位字符串内容不固定,关联概念为字符组([abc]),表示某个位置出现的字符为给定返回中的一个后被命中。

正则:/ab[0-9]cd/gm

3.png

说明:待匹配的字符串内容命中规则为abcd中间包含一个数字。

匹配正例:ab1cd匹配反例:abbcdab12cd

4.png


04. 认识字符组


我们需要命中的字符在一个范围内的表示方法是:
  1. 指定几个,如:[abc]。

5.png

  1. 指定范围,如:[0-9],[a-z],[A-Z]。

6.png7.png8.png

  1. 包含特殊符号,如:[-ab],[ab-],[A-Z],均表示需要命中的内容为两个字符和-其中一个即可。

9.png10.png11.png


我们需要命中的字符不在这个范围内的表示方法是(使用^脱字符标记):
  1. 非指定几个,如:[^abc]。

12.png

  1. 非指定范围,如:[^0-9],[^a-z],[^A-Z]。

13.png14.png15.png


字符组简写表:
简写 范围表示 说明
\d [0-9] 匹配数字
\D [^0-9] 匹配非数字
\w [0-9a-zA-Z_] 匹配单词字符
\W [^0-9a-zA-Z_] 匹配非单词字符
\s [ \t\v\n\r\f] 匹配空白符,空格,水平/垂直制表符,回车,换行,换页
\S [^ \t\v\n\r\f] 匹配非空白符
. [^\n\r\u2028\u2029] 匹配非回车,换行,行分隔符,段落分隔符

仔细看一下这几个单词,你一定能一次性全记住。我们通常会使用[\w\W]来表示任意字符,当然[\d\D],[\s\S],[^]也都可以,有的情况可以用.来充当任意字符💀。16.png


05. 认识量词


量词决定了我们字符要被命中的次数。

量词(贪婪) 表示 量词(惰性)
{m,n} 表示最少命中m次,最多命中n次。 {m,n}?
{m,} 表示最少命中m次。 {m,}?
{m} 表示命中次数为m次。 {m}?
? 表示命中一次或者不命中。 ??
+ 表示至少命中1次。 +?
* 表示命中任意次数,可以不命中。 *?

贪婪模式:越多越好,多多益善。

惰性模式:够用就好,知足常乐。


上表中的图示:17.png


06. 认识管道符|


命中给的的模式中的一种即可,需要注意的是正则中的管道符也为惰性匹配,够用就好。18.png


可以看到,似乎最符合的是右边的helloworld,但是优先命中左边的hello后就停止了,那我们想要匹配到最想要的那个怎么办呢,看下图后先思考一下🤔。

19.png


字符匹配我们就先学到这,赶紧抄起以前代码中的正则用下面的工具试试看吧,XDM🤭。


相关文章
|
编译器 C语言
#include
#include
571 0
|
2月前
|
缓存 监控 Kubernetes
Java虚拟机内存溢出(Java Heap Space)问题处理方案
综上所述, 解决Java Heap Space溢出需从多角度综合施策; 包括但不限于配置调整、代码审查与优化以及系统设计层面改进; 同样也不能忽视运行期监控与预警设置之重要性; 及早发现潜在风险点并采取相应补救手段至关重要.
469 17
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
3 秒音频也能克隆?拆解 Spark-TTS 架构的极致小样本学习
本文深入解析了 Spark-TTS 模型的架构与原理,该模型仅需 3 秒语音样本即可实现高质量的零样本语音克隆。其核心创新在于 BiCodec 单流语音编码架构,将语音信号分解为语义 Token 和全局 Token,实现内容与音色解耦。结合大型语言模型(如 Qwen 2.5),Spark-TTS 能直接生成语义 Token 并还原波形,简化推理流程。实验表明,它不仅能克隆音色、语速和语调,还支持跨语言朗读及情感调整。尽管面临相似度提升、样本鲁棒性等挑战,但其技术突破为定制化 AI 声音提供了全新可能。
500 35
|
机器学习/深度学习 人工智能 自然语言处理
2024年AI辅助研发:科技创新的引擎
2024年AI辅助研发:科技创新的引擎
690 1
|
8月前
|
SQL 消息中间件 Serverless
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
235 4
|
编解码 程序员
(12)Qt事件系统(one)
本文详细介绍了Qt事件系统,包括各种系统事件、鼠标事件、键盘事件、定时器等的处理方法和示例代码。
427 0
(12)Qt事件系统(one)
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
228 0
|
JavaScript 前端开发 NoSQL
技术心得:微信小助手之wechaty模块(个人笔记,于人无用)
技术心得:微信小助手之wechaty模块(个人笔记,于人无用)
177 0
|
自然语言处理 机器人 Python
LangChain 中的提示模板
提示模板是 LangChain 中一个强大的功能,可以帮助开发人员快速构建复杂的应用程序。本文将详细介绍 LangChain 中的提示模板,包括其概念、设计、实现和使用案例。
293 6