正则表达式-前瞻和后顾

news2025/1/18 11:01:42

正则表达式中的前瞻和后顾。

前瞻(Lookahead)

前瞻是一种断言,它会检查在当前位置之后是否存在某种模式,但不会实际匹配该模式。前瞻有两种形式:

  1. 正向前瞻 (?=pattern)

    • 检查当前位置之后是否存在指定的模式
    • 如果存在,则匹配成功,但不会消耗该模式
    • 例如 \w+(?=\d) 将匹配后面跟数字的单词,如 “apple42”、“hello123”
  2. 负向前瞻 (?!pattern)

    • 检查当前位置之后是否不存在指定的模式
    • 如果不存在,则匹配成功,但不会消耗该模式
    • 例如 \w+(?!\d) 将匹配后面不跟数字的单词,如 “apple”、“hello”

后顾(Lookbehind)

后顾是一种断言,它会检查在当前位置之前是否存在某种模式,但不会实际匹配该模式。后顾有两种形式:

  1. 正向后顾 (?<=pattern)

    • 检查当前位置之前是否存在指定的模式
    • 如果存在,则匹配成功,但不会消耗该模式
    • 例如 (?<=\$)\d+ 将匹配美元符号后面的数字,如 “$42”、“$100”
  2. 负向后顾 (?<!pattern)

    • 检查当前位置之前是否不存在指定的模式
    • 如果不存在,则匹配成功,但不会消耗该模式
    • 例如 (?<!\$)\d+ 将匹配不在美元符号后面的数字,如 “42”、“100”

下面是一些示例,帮助你更好地理解前瞻和后顾的使用:

  1. 匹配以"http://"或"https://"开头的 URL:

    • 正则表达式: (?:http|https)://\S+
  2. 匹配以"www."开头的域名:

    • 正则表达式: (?:www\.)\S+\.\w+
  3. 匹配带有"@"符号的电子邮件地址,但不包括以"admin@"开头的:

    • 正则表达式: \b(?!admin@)\S+@\S+\.\w+\b
  4. 匹配以"$“开头的数字,但不包括以”$0"开头的:

    • 正则表达式: (?<=\$)(?!0)\d+

再举几个实例来帮助你更好地理解前瞻和后顾。

前瞻示例

  1. 匹配以"www."开头的域名,但不包括以"www.example.com"结尾的:

    • 正则表达式: (?=^www\.\S+$)(?!^www\.example\.com$)\S+
  2. 匹配包含"http://"或"https://"的 URL,但不包括以"http://example.com"或"https://example.com"开头的:

    • 正则表达式: (?=^https?:\/\/\S+$)(?!^https?:\/\/example\.com\S*$)\S+
  3. 匹配以"admin_"开头的用户名,但不包括以"admin_root"结尾的:

    • 正则表达式: (?=^admin_\S+$)(?!^admin_root$)\S+

后顾示例

  1. 匹配以" " 结尾的数字 , 但不包括以 " "结尾的数字,但不包括以" "结尾的数字,但不包括以"$"开头的:

    • 正则表达式: (?<!\$)\d+\$
  2. 匹配以".“结尾的文件名,但不包括以”.txt"结尾的:

    • 正则表达式: (?<!\.[tT][xX][tT]$)\.\w+$
  3. 匹配以"admin:"开头的行,但不包括以"root:admin:"开头的:

    • 正则表达式: (?<!^root:)^admin:\S+

这些示例展示了前瞻和后顾在各种场景下的应用,包括匹配 URL、用户名、文件名以及文本行等。通过这些示例,相信你对正则表达式中的前瞻和后顾有了更深入的理解。

在这里插入图片描述

这个AI工具超好用,每天都有免费额度,写文章、总结长视频、画图等,都几秒搞定!快去下载Sider Chrome或Edge插件,薅羊毛!
https://sider.ai/invited?c=2b94a5fccc7ce8fad5a89d3967577451

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

反转链表(C语言)———链表经典算法题

题目描述​​​​​​206. 反转链表 - 力扣&#xff08;LeetCode&#xff09;&#xff1a; 答案展示: 迭代&#xff1a; 递归&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* rev…

探索大型语言模型(LLM)的世界

​ 引言 大型语言模型&#xff08;LLM&#xff09;作为人工智能领域的前沿技术&#xff0c;正在重塑我们与机器的交流方式&#xff0c;在医疗、金融、技术等多个行业领域中发挥着重要作用。本文将从技术角度深入分析LLM的工作原理&#xff0c;探讨其在不同领域的应用&#xff0…

Spark云计算平台Databricks使用,创建workspace和Compute计算集群(Spark集群)

Databricks&#xff0c;是属于 Spark 的商业化公司&#xff0c;由美国加州大学伯克利 AMP 实验室的 Spark 大数据处理系统多位创始人联合创立。Databricks 致力于提供基于 Spark 的云服务&#xff0c;可用于数据集成&#xff0c;数据管道等任务。 1 创建workspace 点击创建wor…

[前后端基础]图片详解

[前后端基础]图片传输与异步-CSDN博客 https://juejin.cn/post/6844903782959022093#heading-3 base64、file和blob用JS进行互转的方法大全【前端】_js base64转blob-CSDN博客 后端存储方式 对于第一种存储方式&#xff0c;我们前端直接将存储路径赋值给 src 属性即可轻松显示。…

每天五分钟计算机视觉:使用极大值抑制来寻找最优的目标检测对象

本文重点 在目标检测领域,当模型预测出多个候选框(bounding boxes)时,我们需要一种方法来确定哪些候选框最有可能表示真实的目标。由于模型的不完美性和图像中目标的重叠性,往往会有多个候选框对应于同一个目标。此时,极大值抑制(Non-Maximum Suppression,NMS)技术就…

基于BP神经网络的16QAM解调算法matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ........................................................... % 第一部分&#xff1a;加载并…

TMS320F280049 CLB模块--总览(0)

CLB模块是可配置的逻辑块&#xff0c;和FPGA的CLB有些不同。 下图是CLB模块在系统中的交互&#xff0c;图中CLB XBAR和TILE是CLB。从049中有4个CLB&#xff0c;也就是TILE1-4。 下图是CPU和CLB交互的示意图。 下图是CLB的时钟。 参考文档&#xff1a; TMS320F28004x Real-Tim…

【Linux系统编程】31.pthread_detach、线程属性

目录 pthread_detach 参数pthread 返回值 测试代码1 测试结果 pthread_attr_init 参数attr 返回值 pthread_attr_destroy 参数attr 返回值 pthread_attr_setdetachstate 参数attr 参数detachstate 返回值 测试代码2 测试结果 线程使用注意事项 pthread_deta…

WebRTC 客户端状态机

WebRTC 客户端状态机 WebRTC 客户端状态机客户端状态机客户端加入流程图客户端离开流程图端到端连接的基本流程 WebRTC 客户端状态机 客户端状态机 首先我们来看一下客户端的一个状态机&#xff0c;客户端与服务器直接通过信令的一个交互之后自然而然的形成一个状态机&#x…

分别 使用Eclipse Memory Analyzer(MAT) 和 JProfiler进行分析出内存溢出的类名

背景&#xff1a; 之前一直使用的JProfiler&#xff0c;本次测试&#xff0c;产生的hprof文件挺大&#xff0c;同事说使用jprofiler打不开&#xff0c;让用MAT。 方式1:使用MAT分析 1)jmap生成快照 jps top jstat -gcutil 24755 1000 5 netstat -atu|grep 20002 netstat -tu…

Jackson工具,java对象和json字符串之间的互相转换

一、maven依赖引入jackson <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.5</version></dependency>jackson-databind依赖见下&#xff1a; <depend…

从零开始写 Docker(十三)---实现 mydocker rm 删除容器

本文为从零开始写 Docker 系列第十三篇&#xff0c;实现类似 docker rm 的功能&#xff0c;使得我们能够删除容器。 完整代码见&#xff1a;https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识&#xff1a; 核心原理&#xff1a;深…

用webui.sh安装报错No module named ‘importlib.metadata‘

安装sdweb报错&#xff0c;出现No module named importlib.metadata&#xff1a; glibc version is 2.35 Cannot locate TCMalloc. Do you have tcmalloc or google-perftool installed on your system? (improves CPU memory usage) Traceback (most recent call last):File…

什么样的人能上百度词条

百度百科是一个向所有互联网用户开放的平台&#xff0c;任何人都可以创建或编辑词条。然而&#xff0c;并不是所有的人物或事物都能被收录到百度百科中&#xff0c;它有一定的收录标准和审结的关于哪些人或事物能上百度百科的条件和流程。 百度百科的收录标准 知名度和影响力&…

用于YouTube推荐的深度神经网络YouTube DNN

这篇论文是最近参加组会看的一篇新论文&#xff0c;论文虽然是2016年出的论文&#xff0c;但是它是YouTube发表的&#xff0c;且是应用在YouTube这样超级大的平台上的一篇工业界的推荐系统的论文&#xff0c;我读完之后也觉得论文有一些可取之处的&#xff0c;所以和大家分享一…

2024第九届数维杯数学建模论文模板(内附LaTeX+Word)

一年一度的2024年第九届数维杯国赛报名进行中&#xff01;相信很多同学们已经摩拳擦掌蓄势待发了&#xff01; 经历三天比赛&#xff0c;最后提交的论文就是最终答卷&#xff0c;那么一篇数模论文&#xff0c;包括哪些内容呢&#xff1f; 一篇完整的数模论文&#xff0c;包括…

如何控制外部用户访问SAP表的权限

今天搞了一天&#xff0c;我就去找找找啊。我们是IDMC要访问BW的表。 Configure SAP user authorization (informatica.com) 这个informatica上面说要连SAP的数据的话&#xff0c;需要设置这些用户权限。 我也没具体看这两权限对象&#xff0c;这个别人已经设置好了。但是表权…

《探索信息技术中心一体化系统架构:提升企业数字化转型的效率与能力》

在当今数字化时代&#xff0c;信息技术中心&#xff08;IT Center&#xff09;扮演着至关重要的角色&#xff0c;它不仅是企业的技术支撑&#xff0c;更是推动数字化转型的引擎。为了更好地应对日益复杂的业务需求和技术挑战&#xff0c;许多企业开始探索一体化系统架构&#x…

第二篇【AI与传奇开心果系列】Python的AI技术点库案例示例:详解AI工业应用算法原理

AI与传奇开心果系列博文 系列博文目录Python的AI技术点库案例示例系列 博文目录前言一、AI工业应用算法原理介绍二、机器学习在工业领域的应用算法示例代码三、深度学习算法在工业领域应用示例代码四、强化学习在工业领域应用示例代码五、自然语言处理在工业领域应用示例代码六…

【代码随想录】回溯问题之组合

前言 更详细的在大佬的代码随想录 (programmercarl.com) 本系列仅是简洁版笔记&#xff0c;为了之后方便观看 解决的类型问题 组合无序&#xff0c;排列有序 组合切割子集排列&#xff08;强调元素的顺序&#xff09;棋牌问题&#xff08;n皇后&#xff0c;数独&#xff0…