正则表达式学习笔记 Chapter02--匹配字符

Python学习笔记 - 探索正则表达式re元字符 在处理文本和字符串时,正则表达式是一个强大的工具。本文深入探讨了Python中正则表达式库re的元字符,这些特殊字符用于构建复杂的匹配模式。正则表达式的基础概念,包括字符集、量词和分组。随后,文章详细讲解了re库中常用的元字符,如等,以及它们在文本匹配中的作用。通过丰富的示例演示了如何使用这些元字符来完成各种文本处理任务,从简单的字符串匹配到复杂的文本分析。这里提供了一份全面而详细的Python正则表达式使用指南,包括元字符的各种应用和高级技巧。 阅读详情

点此进入:正则表达式教程

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为”元字符”)组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

非打印字符可以作为正则表达式的组成部分,转义序列如表格:

字符描述
\cx匹配由x指明的控制字符。例如,\cM 匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的’c’字符
\f匹配一个换页符。等价于 \x0c 和 \cL。
\n匹配一个换行符。等价于 \x0a 和 \cJ。
\r匹配一个回车符。等价于 \x0d 和 \cM。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t匹配一个制表符。等价于 \x09 和 \cI。
\v匹配一个垂直制表符。等价于 \x0b 和 \cK。

但是如果我们想要匹配到字符串中的一些特殊字符应该怎么办呢,例如*?\等等,这些字符在字符串中有着各自的作用,而非普通字符,这就需要我们转义了。
举例子:我们要匹配abc*de,要进行转义。

//使用\*对*进行转义,本式返回abc*de
var str = 'dabc*de45';
var pattern = /abc\*de/;
document.write(str.match(pattern));

转义字符表就不列出了,用到的时候去查。

限定符

字符描述
*匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
?匹配前面的子表达式零次或一次。例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。
{n}n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,}n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,”o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。

如果我们要匹配从1~99甚至100以上三位数的章节数,那么表达式如下:

/Chapter [1-9][0-9]*/

这里的*表示出现0次,1次或者多次,那么正好可以表示1 2 3位数。

如果我们只匹配的章节数最多只有两位,那么可以采用以下方式:

/Chapter [0-9]{1,2}/

{1,2}的意思是[0-9]的数字出现1次到2次,但是这不是个好办法,如果真的有3位数,那么这个表达式只会匹配前两位数字,而且Chapter 0也会被匹配上。
那么最优的写法应该是:

/Chapter [1-9][0-9]?/

?表示出现0次或者1次。
或者

/Chapter [1-9][0-9]{0,1}/

{0,1}表示出现0次到1次。

*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
举例说明,假设HTML标签中有这么一段

<h1>Chapter2  匹配字符</h1>

贪婪匹配所有的内容:<.*>

var str = '<h1>Chapter2  匹配字符</h1>';
var pattern = /<.*>/;
//document.write(str.match(pattern));
alert(str.match(pattern));

表达式输出str字符串中的所有内容。

如果非贪婪匹配,只取标签h1:<.*?>

var str = '<h1>Chapter2  匹配字符</h1>';
var pattern = /<.*?>/;
//document.write(str.match(pattern));
alert(str.match(pattern));

还有使用<\w+?>

var str = '<h1>Chapter2  匹配字符</h1>';
var pattern = /<\w+?>/;
//document.write(str.match(pattern));
alert(str.match(pattern));

这两个表达式在我这里都输出相同的结果,即都是开始的h1标签,教程上说<.*?>会匹配到开始和结束的h1标签,我这里没有输出出来,如果错误以后再更改吧。

总之,通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从”贪心”表达式转换为”非贪心”表达式或者最小匹配。

使用定位符我们能够将正则表达式固定到行首或行尾。

定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,span class=”marked”>\b 描述单词的前或后边界,span class=”marked”>\B 表示非单词边界。

限定符表

字符描述
^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。
$匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。
\b匹配一个字边界,即字与空格间的位置。
\B非字边界匹配。

注意:不能将限定符与定位符一起使用。由于在紧靠换行或者字边界的前面或后面不能有一个以上位置,因此不允许诸如 ^* 之类的表达式。

这章引用原文的比较多,实践部分是我自己实践出来写的….

Plecs standalone 4.9.5最新版本,赶紧来下载使用吧,需要做并网逆变器及光伏储能变换器的朋友赶紧下载起来 PLECS 4.9.5较4.7.1版实现全面升级:采用自适应求解器切换技术,支持多核CPU/GPU加速,仿真速度提升30-50%;新增模型引用功能,实现模块化设计;强化光伏/风电等新能源组件,支持多物理场耦合分析;优化代码生成功能,兼容多种硬件平台和FMU导入。新版特别适用于复杂电力电子系统、多域联合仿真及硬件在环测试项目,但对硬件配置要求更高。基础教学项目仍可使用4.7.1版本。建议用户根据项目复杂度选择升级方案。 阅读详情

相关推荐

成分数据的闭合效应对地球化学数据的影响及其解决方案

封闭效应 (Closure Effect),也称为常数和效应 (Constant Sum Effect),是地球化学数据分析中一个需要特别注意的统计现象。它的产生是由于我们通常使用成分数据 (Compositional Data)百分比 (%)百万分率 (ppm)由于这些数据表示的是各组分占总体的比例,它们的总和必然是一个常数 (例如 100% 或 1,000,000 ppm)。这意味着每个元素的含量不是独立的,而是与其他元素的含量相互制约。改变其中一个元素的含量必然会影响其他元素的相对比例。

qq_59349063的博客 1535

chapter.初识1.1(正则表达式一)

了解:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 原子 普通字符作为原子 import re string="helloworld" #普通字符作为原子 p="owo"#要匹配的字符赋予p result=re.search(p,string) print(resul...

Linkage interrupt 766

大模型系统构建的“三驾马车”——Prompt、Context与Harness工程

在LLM应用开发的早期阶段,我们热衷于比拼“提示词”的精妙程度。那时,一个精心构造的思维链CoT就能让模型的表现提升10%以上。随着大模型从“玩具”走向“生产系统”,我们逐渐意识到:单一的 Prompt 只是起点,而非终点。 真正的工业级应用,需要构建一套三层递进的工程体系——Prompt Engineering、Context Engineering 和 Harness Engineering。

西木风落 604

正则表达式学习笔记

一、简介 1、为什么使用正则表达式 通过使用正则表达式,可以: 测试字符串内的模式。 例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。 替换文本。 可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。 基于模式匹配从字符串中提取子字符串。 可以查找文档内或输入域内特定的文本。 2、举个示例 ^ 为匹配输入字符串的开始位置。 [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。 abc∗∗匹配字母∗∗abc

weixin_44576725的博客 4125

深入解析mSATA与mini-PCIE接口的硬件设计要点

本文深入解析mSATA与mini-PCIE接口的硬件设计要点,涵盖信号定义、电源设计、高速信号处理及PCB布局布线等关键内容。通过实战案例和调试技巧,帮助工程师规避常见设计陷阱,提升电路设计效率,特别适合工业控制和嵌入式系统开发场景。

weixin_28741413的博客 317

Labelme AI-Polygon闪退排查与修复指南

本文详细介绍了Labelme AI-Polygon功能闪退问题的排查与修复方法,包括环境配置检查、模型路径设置、依赖库版本控制等关键步骤。通过系统性的解决方案和实用技巧,帮助用户快速解决闪退问题,确保数据标注工作的高效进行。

weixin_29311017的博客 140

正则表达式(一)字符串匹配

正则表达式介绍简单的模式字符匹配方括号 [ ]反斜杠 \特殊字符重复的事情元字符 *元字符 +元字符 ?元字符 {m,n} 正则表达式(Regular expressions 也称为 REs,或 regexes 或 regex patterns),本质上是一个微小的且高度专业化的编程语言。 它被嵌入到 Python 中,并通过 re 模块提供给程序猿使用。 使用正则表达式,你需要指定一些...

花果山的和尚的博客 7万+

FCC 首个扫地机器人豁免落地,Matic 凭什么抢先?

Matic获FCC首个扫地机器人豁免,实为提前布局的合规姿态。其产品在美国组装,并采用已认证射频模组,虽未达65%美国成分门槛,但已具备“本土制造”优势。豁免本质是对既有合规状态的确认,而非解救。此举在商业上放大品牌价值,抢占“安全、合规、本土”叙事高地,凸显供应链安全正取代技术标准成为监管核心。未来合规成本将攀升,规则主导权仍在FCC手中。

致力于lidar应用开发 98

正则表达式-基础语法总结

语法 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 例如: runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。 runoo*b,可以匹配 runob、runoob、...

今天吃了吗的博客 811

实验2 存储器设计与实现【计算机组成原理】

实验2 存储器设计与实现【计算机组成原理】

小心星的博客 2398

手势识别器:实现手部动作识别器

在本篇文章中,我们将使用Python来实现一个简单的手部动作识别器。然后,我们通过循环从摄像头获取每一帧图像,并对每一帧图像进行处理。我们提取手部关键点并计算手势的特征向量,然后将其添加到特征列表和标签列表中。接下来,我们再次从摄像头获取每一帧图像,并进行手势识别。我们提取手部关键点并计算手势的特征向量,然后使用训练好的分类器来预测手势,并在图像上显示出来。在这个实现中,我们将使用MediaPipe库来检测和跟踪手部关键点,然后使用K最近邻(K-Nearest Neighbors)算法对手势进行分类。

BitSlinger的博客 238

剑指offer:面试题19—正则表达式匹配

题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配 解决: “.”表示任意字符 "*"表示它前面的字符可以出现任意次(包括0次) ...

123木头人! 191

RK3568平台(KBuild篇)KBuild编译体系

从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这和过去的编译系统有很大的不同,尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会两次扫描Linux的Makefile:首先编译系统会读取Linux内核顶层的Makefile,然后根据读到的内容第二次读取Kbuild的Makefile来编译Linux内核。kbuild,即 kernel build,用于编译 Linux 内核文件。

weixin_49303682的博客 349

匹配特定字符串_正则表达式学习笔记(四):提取字符串

前言上一篇文章中对正则表达式的多选结构进行了研究,但是要注意,由小括号括起来的正则表达式除了表示多选结构外,还有另一个重要的功能,即根据它可以提取出对应的字符串信息,并将其保存在相应的默认变量里,这一篇我们来研究一下这个问题。提取指定字符串在一些情况下,我们要寻找具备某种特征的字符串,比如对于给定的字符串The theory,现要在其中找以the开头的单词,并将该单词其余的部分找出来,用...

weixin_35377028的博客 1613

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

正则表达式匹配空值_正则表达式学习笔记(三):元字符

前言上一篇文章中我们研究了行的起止符、字符组和点号等正则表达式的元字符,有的同学可能注意到,在第一篇学习笔记中提到的(.*?)正则表达式的含义还是不明朗,因为*?这两个符号到目前为止,我们还没有分析过。这一篇文章中,我们继续来研究其它的元字符,之后用学到的知识来给(.*?)做出解释。多选分支我们已经知道字符组是由中括号[]括起来的,而多选结构则是由小括号()括起来的,从匹配字符的数量来看...

weixin_39620279的博客 1454

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

(day 19)JavaScript学习笔记(正则表达式1之创建正则表达式、字符匹配、特殊字符匹配、匹配次数)

今天学习正则表达式,主要是创建正则表达式、字符匹配、特殊字符匹配等。

m0_63165331的博客 1420

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

正则表达式学习笔记(1)(字符匹配)

目录 简介 常用字符及其说明 常用字符匹配 空白元字符 重复匹配 基础进阶 简介 正则表达式(regular expression,简称regex)是一些用来匹配和处理文本的字符串。正则表达式语言并不是一种完备的语言,他是内置于其他语或软件产品里的“迷你”语言。正则表达式的使用无非两种情况:一种是查找特定的信息(搜索),另一种是查找并编辑特定的信息(替换)。学习正则表达式对我们理...

Bei_xifen的博客 910

【学习笔记】——正则表达式从匹配qq邮箱开始

正则在线测评验证1.匹配一个qq邮箱:[1-9][0-9]+@qq.com  或者[1-9]\d+@qq.com分析:qq邮箱是由数字+@qq.com组成,实际上匹配qq邮箱的主要内容也就是对数字的匹配。这边的 \d 其实就是[0-9],也就是匹配数字字符。那我们再深入一点,我们已知qq号是从10000开始的,那么我们对上述的匹配规则可以做进一步修改为:[1-9][0-9]{4,}@qq.com这...

24min的博客 2万+

Python学习笔记46:Python正则表达式_匹配单个字符_匹配多个字符_匹配分组

匹配单个字符 学习目标 能够使用re模块匹配单个字符 1. 匹配单个字符 在上一小节中,了解到通过re模块能够完成使用正则表达式来匹配字符串 本小节,将要讲解正则表达式的单字符匹配 代码 功能 . 匹配任意1个字符(除了\n) [ ] 匹配[ ]中列举的字符 \d 匹配数字,即0-9 \D 匹配非数字,即不是数字 \s 匹配空白,即 空格,tab键 \S 匹配非空白 \w 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字 \W 匹配特殊字符,即非字母、非数

JasonYangQ的博客 1万+

【机构vip教程】​python(1):python正则表达式匹配指定的字符开头和指定的字符结束

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili​​​​​​也方便你下次能够快速查找。如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

阿里大叔说测试的博客 1715

02. 匹配单个字符(学习笔记)

2. 正则表达式必知必会-匹配单个字符 2.1 匹配纯文本 const str = 'Hello my name is wendy. My website is https://github.com/lwl0812/wendys-site.'; const reg = /wendy/g; let match; while ((match = reg.exec(str))) ...

diannan2169的博客 150

学习笔记:正则表达式

正则表达式是文本处理方面功能最强大的工具之一。正则表达式语言用来构造正则表达式(最终构造出来的字符串就称为正则表达式),正则表达式用来完成搜索和替换操作。 本文参考《正则表达式必知必会(修订版)》《Learning Regular Expressions》Ben Forta

manmanbab的博客 2482

Perl学习笔记(2)——模式匹配和正则表达式

模式匹配及正则表达式模式匹配模式匹配的特殊字符字符集模式匹配操作符锚位绑定操作符 =~模式串中的变量内插捕获变量用正则表达式进行文本处理文本替换split操作符join函数列表上下文中的m//在命令行执行Perl模式匹配和正则表达式的例子Perl 模式匹配 模式是指在字符串中寻找特定序列的字符或者说是一个 匹配(或不匹配)某字符串的模板,模式由反斜线包含。而一个** 正则表达式**,就是 用某种模式去匹配一类字符串的一个公式。 要进行复杂的模式,就需要借助于元字符和量词。 模式匹配的特殊字符 字符

zgezi的博客 3547

python关键字匹配_python正则表达式同时匹配多个关键字(多关键字匹配)

网上翻了很多文章。。。居然没有一个有用的。。倒是找到一篇java的,但java的正则表达式和python的还有点不同。那篇java的文章是用"[keywd1]|[keywod2]|[keywd3]"的模式来匹配,这个在py中就不行了,[]会匹配[]中的任何一个分字。在python中的应该是"keywd1|keywd2|keywd3"就行了。然后我个人是喜欢直接使用re.findall() 这样...

weixin_39936086的博客 8191

黑马程序员&传智播客 正则表达式学习笔记 匹配单个字符多个字符

re模块操作 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re 1. re模块的使用过程 #coding=utf-8 # 导入re模块 import re # 使用match方法进行匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上一步匹配到数据的话,可以使...

moonlightpeng的博客 528

linux匹配单个任意字符,Linux学习笔记(15)-grep及正则表达式1

1.根据模式搜索文本grepgrep[选项]模式[文件...]#模式:文本字符和正则表达式的元字符组合而成匹配条件-i忽略大小写--color匹配到的字符加颜色高亮-v显示没有被模式匹配到的行-o只显示被模式匹配到的字符串2.正则表达式元字符.匹配任意单个字符[]匹配指定范围内的任意单个字符[^]匹配指定范围外的任意单个字符[:alnum:]代表英文大小写字符及数字,即0-...

weixin_39664477的博客 1923
上一篇: 正则表达式学习笔记 Chapter01--入门
下一篇: 解决Git push时error: failed to push some refs to...
void_lxy
博客等级 码龄11年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值