正则表达式-前瞻和后顾

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

前瞻(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.mzph.cn/news/834275.shtml

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

相关文章

RAG 场景对Milvus Cloud向量数据库的需求

虽然向量数据库成为了检索的重要方式,但随着 RAG 应用的深入以及人们对高质量回答的需求,检索引擎依旧面临着诸多挑战。这里以一个最基础的 RAG 构建流程为例:检索器的组成包括了语料的预处理如切分、数据清洗、embedding 入库等,然后是索引的构建和管理,最后是通过 vecto…

【Redis7】10大数据类型之Bitmap类型

文章目录 1.Bitmap(位图)2.常用命令3.示例3.1 SETBIT和GETBIT3.2 STRLEN3.3 BITCOUNT3.4 BITOP 1.Bitmap(位图) Redis的Bitmap类型并不是一个独立的数据类型&#xff0c;而是对String类型的一种巧妙使用&#xff0c;允许开发者以位级别操作字符串中的数据。Bitmap可以视为一个…

学习笔记:【QC】Android Q : telephony-phone 模块

一、phone init 流程图 高清的流程图参考&#xff1a;【高清图&#xff0c;保存后可以放大看】 二、phone MO 流程图 高清的流程图参考&#xff1a;【高清图&#xff0c;保存后可以放大看】 三、phone MT 流程图 高清的流程图参考&#xff1a;【高清图&#xff0c;保存后可以…

MySQL慢查询优化【二】

当处理MySQL慢查询优化时&#xff0c;通常需要考虑以下几个方面&#xff1a; 索引优化&#xff1a;确保查询涉及的列上存在适当的索引&#xff0c;以加快数据检索速度。可以通过使用EXPLAIN语句来查看查询执行计划&#xff0c;并评估是否使用了索引。举例来说&#xff0c;如果…

提升工作效率,用ONLYOFFICE打造高效团队协作环境

作为一名深耕技术领域已有六七年的开发者&#xff0c;同时又是断断续续进行技术创作将近六年的一个小小作者&#xff0c;我在工作和日常生活中&#xff0c;使用过各色各样的软件。 而在最近几年&#xff0c;一款名为ONLYOFFICE的开源办公套件逐渐走进并融入我的工作与生活&…

paraview 处理 fluent 计算结果

paraview 处理 fluent 计算结果 参考链接&#xff1a;https://zhuanlan.zhihu.com/p/598032490 希望先生的主页也很有价值&#xff1a;https://www.cnblogs.com/Xiwang-Sun/p/14943429.html

Edge浏览器的前端开发体验与深度探索

Edge浏览器作为一款备受关注的现代浏览器&#xff0c;在前端开发领域扮演着重要的角色。在这篇博文中&#xff0c;我将分享我对Edge浏览器的使用心得与深度探索&#xff0c;探讨其在前端开发中的优势和特点。 1. Edge浏览器的优势 a. 兼容性 Edge浏览器注重兼容性&#xff0c…

String是最基本的数据类型吗?

在Java编程语言的语境中&#xff0c;探讨“String是否是最基本的数据类型”是一个深入且富有意义的话题。首先&#xff0c;我们需要明确“基本数据类型”的定义&#xff0c;并在此基础上探讨String的特性及其在编程中的角色。 一、基本数据类型的定义 基本数据类型&#xff0…

如何在适用于 Linux 的 Visual Studio Code 中使用 .NET 8 上的 FastReport Avalonia

我们将继续撰写有关在各种操作系统上的 Visual Studio Code 中使用 FastReport Avalonia 的系列文章。在本文中&#xff0c;我们将详细分析如何使用 Visual Studio Code IDE 在 Linux 操作系统上运行 FastReport Avalonia。 Avalonia UI 是一个积极用于开发跨平台用户界面的 .…

Hyper-V 管理器安装的ubutun扩容磁盘空间说明

一、删除检查点 首先把这个想要扩容的虚拟机停止掉&#xff0c;然后找到检查点&#xff0c;全删除掉&#xff0c;否则没法编辑这个虚拟磁盘。 二、编辑虚拟磁盘 下面截图中下一步不能点击的&#xff0c;只要删除检查点之后就可以点击了。点击下一步然后选择扩容&#xff0c;然后…

组合模式(结构型)

目录 一、前言 二、透明组合模式 三、安全组合模式 四、总结 一、前言 组合模式(Composite Pattern)是一种结构型设计模式&#xff0c;将对象组合成树形结构以表示“部分-整体”得层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式由以下角色组成…

AI助手,为生活和工作增添新体验

在当今科技飞速发展的时代,人工智能(AI)已经渗透到我们生活和工作的方方面面。无论是传统的大型语言模型,还是专注于搜索领域的AI助手,都为我们带来了前所未有的便利和效率。让我们一起来探索这些AI产品的魅力所在。 大型语言模型凭借强大的自然语言处理能力,可以为我们提供多…

SpringSecurity源码分析(RemeberMe)

RememberMeServices RememberMeServices 记住我的服务的接口 可以重写实现自己的记住我 public interface RememberMeServices { //建议 org. springframework. security. authentication. RememberMeAuthenticationToken 在大多数情况下使用它&#xff0c;因为它具有相应的身份…

C++初识及概述

C概述 c简介 “ c ”中的来自于c语言中的递增运算符&#xff0c;该运算符将变量加1。c起初也叫 ” c with clsss ”.通过名称表明&#xff0c;c是对C的扩展&#xff0c;因此c是c语言的超集&#xff0c;这意味着任何有效的c程序都是有效的c程序。c程序可以使用已有的c程序库。…

词袋法TFIDF

Tf-idf⽂本特征提取 TF-IDF的主要思想是&#xff1a;如果某个词或短语在⼀篇⽂章中出现的概率⾼&#xff0c;并且在其他⽂章中很少出现&#xff0c;则认为此词或者短语具有很好的类别区分能⼒&#xff0c;适合⽤来分类。TF-IDF作⽤&#xff1a;⽤以评估⼀字词对于⼀个⽂件集或…

OpenAI 发布 AI 生成图片检测器;Meta 推出 AI 广告创意工具;Google 正式发布 Pixel 8a,主打 AI

OpenAI 发布 AI 生成图片检测器 OpenAI 昨日官宣推出专用的 AI 监测工具&#xff0c;用于监测图片是否由其旗下 AI 图片生成工具 DALL-E 生成&#xff0c;准确率高达 98.8%。 不过该公司表示&#xff0c;这个检测工具并非旨在检测 Midjourney 和 Stability 等其他流行生成器生…

安卓使用Fiddler抓包 2024

简介 最近试了一下安卓使用fiddler 抓包&#xff0c;发现https包基本都会丢失。原因是Anandroid 7版本针对ssl安全性做了加强&#xff0c;不认可用户的证书。我们要做的就是把fiddler导出的证书进过处理后放置到系统证书目录下面&#xff0c;这样才能抓包https请求。 这里使用…

https介绍,加密解密(举例+必要性,对称/非对称加密介绍),数字摘要/指纹(介绍,应用(session id,网盘的秒传功能))

目录 https 引入 介绍 加密解密层 介绍 没有绝对的安全 使用ssl的弊端 加密解密 概念 加密 解密 秘钥 举例 现实中 网络中 加密的必要性 常见加密方式 对称加密 特点 非对称加密 特点 数字摘要/指纹 介绍 应用 session id 百度网盘的秒传功能 https …

21_Scala集合_可变数组ArrayBuffer

文章目录 ArrayBuffer1.创建可变数组ArrayBuffer2.增加数据3.删除数据4.修改数据5.查询数据Appendix ArrayBuffer ArrayBuffer可变数组–感觉优点类似于Java的ArrayList 1.创建可变数组ArrayBuffer –请注意下面的mutable import scala.collection.mutable.ArrayBuffer //m…

DuDuTalk:4G桌面拾音设备在银行网点服务场景的应用价值

随着科技的飞速发展&#xff0c;银行业也在不断地寻求创新以提高服务质量和效率。在这个过程中&#xff0c;4G桌面拾音设备作为一种新型的智能设备&#xff0c;其在银行网点服务场景中的应用价值逐渐凸显出来。本文将从多个角度探讨4G桌面拾音设备在银行网点服务场景的应用价值…