正则表达式 先行断言 \S {} 示例

目录

  • 数据准备
  • 一. 先行断言
    • 1.1 正向先行断言
    • 1.2 负向先行断言
  • 二. 配合 {} 和 \S 使用
    • 2.1 匹配一个任意非空白字符
    • 2.2 匹配任意多个非空白字符
    • 2.3 匹配3个非空白字符
    • 2.4 匹配至少3个非空白字符
    • 2.5 匹配0~3个非空白字符


数据准备

⏹文件1

0561-10 AAA 123 dfg  @@345 sss
0561-20 BBB 456 ssa
0561-30 CCC 123 sss ~1~2
0561-40 CCC 432 cvf
0561-50 DDD 123 sss
0561-60 EEE 111 sss 123
0561-60 FFF 111 123 YYY

⏹文件2

foo1bar foo2bar foo2wwebar foo3baz
foo~bar foo@Dwbar foo3baz

一. 先行断言

在正则表达式中,先行断言是一种特殊的断言,用来匹配某个位置前后的特定模式,但不消耗字符。
先行断言分为

  • 正向先行断言(positive lookahead)
  • 负向先行断言(negative lookahead)

1.1 正向先行断言

正向先行断言用于断言在某个位置之后必须能匹配一个特定的模式。语法为:(?=pattern)

\s123.*(?=sss)

  • 任意空白字符后面跟着 123,然后跟着任意数量的字符,直到遇到后面紧跟着 sss 的位置
  • 该行,要有先有 123,再有 sss,且 sss 不参与匹配

在这里插入图片描述

1.2 负向先行断言

负向先行断言用于断言在某个位置之后不能匹配一个特定的模式。语法为:(?!pattern)

^(?=.*123)(?!.*sss).*

  • ^:匹配字符串的开始位置。
  • (?=.*123):正向先行断言,表示在当前位置后面必须至少包含 123 这个子串
  • (?!.*sss):负向先行断言,表示在当前位置后面不能包含 sss 这个子串
  • .*:匹配任意数量(包括零个)的字符。
  • $:匹配字符串的结束位置。

⏹确保字符串中包含至少一个 123,并且不包含 sss。
如果符合这两个条件,那么整个字符串将被匹配。

在这里插入图片描述


二. 配合 {} 和 \S 使用

  • \S:匹配任意非空白字符
  • {}:用来指定前面模式的重复次数的量词
    • {n}:匹配前面的模式恰好 n 次
    • {n,}:匹配前面的模式至少 n 次
    • {n,m}:匹配前面的模式至少 n 次,最多 m 次

2.1 匹配一个任意非空白字符

foo\S(?=bar)

  • foo:字面匹配字符序列 foo
  • \S:匹配任意非空白字符
  • (?=bar):正向先行断言,表示在当前位置之后必须紧跟着字符串 bar

在这里插入图片描述

2.2 匹配任意多个非空白字符

foo\S+(?=bar)

在这里插入图片描述

2.3 匹配3个非空白字符

foo\S{3}(?=bar)

在这里插入图片描述

2.4 匹配至少3个非空白字符

foo\S{3,}(?=bar)

在这里插入图片描述

2.5 匹配0~3个非空白字符

foo\S{0,3}(?=bar)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/780621.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【电路笔记】-AB类放大器

AB类放大器 文章目录 AB类放大器1、概述2、AB类放大器介绍3、AB类放大器效率4、偏置方法4.1 电压偏置4.2 分压网络4.3 电位器偏置4.4 二极管偏置5、二极管网络和电流源6、AB类放大器的电源分配7、总结1、概述 A类放大器提供非常好的输出线性度,这意味着可以忠实地再现信号,但…

数据结构之“队列”(全方位认识)

🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 前言 上期博客介绍了” 栈 “这个数据结构,他具有先进后出的特点。本期介绍“ 队列 ”这个数据结构,他具有先进先出的特点。 目录…

【无标题】ubuntu的安装和登录

1.安装ubuntu系统并允许root用户登录 一、安装ubuntu分为以下几个步骤: a、在官方网站下载镜像:https://ubuntu.com/ b、选择安装模式为:Try or install Ubuntu (体验或安装) c、选择体验系统或安装系统&#xff1a…

ComfyUI预处理器ControlNet简单介绍与使用(附件工作流)

简介 ControlNet 是一个很强的插件,提供了很多种图片的控制方式,有的可以控制画面的结构,有的可以控制人物的姿势,还有的可以控制图片的画风,这对于提高AI绘画的质量特别有用。接下来就演示几种热门常用的控制方式 1…

RAG理论:ES混合搜索BM25+kNN(cosine)以及归一化

接前一篇:RAG实践:ES混合搜索BM25+kNN(cosine) https://blog.csdn.net/Xin_101/article/details/140230948 本文主要讲解混合搜索相关理论以及计算推导过程, 包括BM25、kNN以及ES中使用混合搜索分数计算过程。 详细讲解: (1)ES中如何通过BM25计算关键词搜索分数; (2)…

【手写数据库内核组件】0201 哈希表hashtable的实战演练,多种非加密算法,hash桶的冲突处理,查找插入删除操作的代码实现

hash表原理与实战 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章目录 hash表…

下载linux的吐槽

本来这几天放假了,想下一个linux玩一玩 教程(我就是根据这个教程进行下载的,但是呢在进行修改BIOS 模式的 地方遇见了困难,也许是电脑修过的原因,我狂按F12 以及 FnF12都没有BIOS设置,只有一个让我选择用w…

第二次练习

目录 一、student表的增删改查 1.向student表中添加一条新记录 2. 向student表中添加多条新记录 3.向student表中添加一条新记录 4.更新表,grade 大于90的加0.5 5.删除成绩为空的记录 二、用户权限部分 1、创建一个用户test1使他只能本地登录拥有查询student表的权…

6、Redis系统-数据结构-05-整数

五、整数集合(Intset) 整数集合是 Redis 中 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不大时,就会使用整数集合这个数据结构作为底层实现。整数集合通过紧凑的内存布局和升级机制,实现了…

NSSCTF-Web题目24(RCE-空格绕过、过滤绕过)

目录 [MoeCTF 2021]babyRCE 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]funny_web 4、题目 5、知识点 6、思路 [MoeCTF 2021]babyRCE 1、题目 2、知识点 空格绕过、过滤绕过 3、思路 出现源码,进行代码审计 需要我们GET方式上传一个rce变量&#x…

针对tcp不出网打——HTTP隧道代理(以CFS演示)

目录 上传工具到攻击机 使用说明 生成后门文件 由于电脑短路无法拖动文件,我就wget发送到目标主机tunnel.php文件​ 成功上传​ 可以访问上传的文件 启动代理监听 成功带出 后台私信获取弹药库工具reGeorg 上传工具到攻击机 使用说明 生成后门文件 pyt…

分班结果老师怎么发给家长?

分班结果老师怎么发给家长? 随着新学期的脚步渐近,老师们的工作也变得愈发繁忙。从准备教学计划到整理课程材料,每一项任务都不容小觑。而其中,分班结果的告知工作,更是让不少老师头疼不已。传统的分班通知方式&#…

fork创建子进程详解

一.前言 在上一篇文章-进程的概念,最后我们提到了创建进程的方式有两种方式,一种是手动的创建出进程,还有一种就是我们今天要学习的使用代码的方式创建出子进程-fork。 而学习fork创建出进程的过程中,我们会遇到以下问题&#x…

STL——map和set

目录 一、set 二、map 1.插入 2.隆重介绍 [] A使用场景 B原理 一、set set即STL库中提供的K模型的二叉搜索树&#xff0c;他的函数使用和其他容器很相似&#xff0c;可以自行阅读文档#include <set> 本文旨对库中难以理解的函数作说明 二、map map即KV模型的二…

触底加载的两种思路(以vue3前端和nodejs后端为例)

一:首先,nodejs后端的代码都是一样的. 需要前端返回page参数,然后nodejs逻辑进行处理,截取页数和每页条数和总条数, 总条数用来作为判断是否有数据的条件,也可以不用,注意看下文 一:不用获取容器高度的. pinia中进行的axios请求处理 在vue文件中进行pinia中数据的导入,继续进…

全面解析 TypeScript 泛型的二三事

2024年了相信大家都已经在日常开发的过程中使用上了 TypeScript 了。TypeScript 增强了代码可靠性和可维护性&#xff0c;确保减少运行时错误并提高开发人员的工作效率。 TypeScript 通过类型声明 使得 javascript 拥有了强类型校验。而泛型的是类型声明中最重要的一环&#x…

Nettyの源码分析

本篇为Netty系列的最后一篇&#xff0c;按照惯例会简单介绍一些Netty相关核心源码。 1、Netty启动源码分析 代码就使用最初的Netty服务器案例&#xff0c;在bind这一行打上断点&#xff0c;观察启动的全过程&#xff1a; 由于某些方法的调用链过深&#xff0c;节约篇幅&#xf…

Linux内核链表使用方法

简介&#xff1a; 链表是linux内核中最简单&#xff0c;同时也是应用最广泛的数据结构。内核中定义的是双向链表。 linux的链表不是将用户数据保存在链表节点中&#xff0c;而是将链表节点保存在用户数据中。linux的链表节点只有2个指针(pre和next)&#xff0c;这样的话&#x…

在Linux操作系统使用逻辑卷的快照(snapshot),进行对逻辑卷的数据备份。

作用&#xff1a;结合特定应用程序&#xff0c;方便备份数据。 基于cow&#xff08;copy on write 写时复制&#xff09;机制 在创建逻辑卷快照的时候&#xff0c;如果不去设置逻辑卷快照的权限的话&#xff0c;那么这个逻辑卷的权限就是可读可写&#xff0c; 创建逻辑卷快照…

coco数据集格式计算mAP的python脚本

目录 背景说明COCOeval 计算mAPtxt文件转换为coco json 格式自定义数据集标注 背景说明 在完成YOLOv5模型移植&#xff0c;运行在板端后&#xff0c;通常需要衡量板端运行的mAP。 一般需要两个步骤 步骤一&#xff1a;在板端批量运行得到目标检测结果&#xff0c;可保存为yol…