正则表达式-前瞻和后顾

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

前瞻(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.hqwc.cn/news/669630.html

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

相关文章

Elasticsearch安装IK分词器

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解…

大数据实验 实验四:NoSQL 和关系数据库的操作比较

NoSQL 和关系数据库的操作比较 实验目的 理解四种数据库(MySQL、HBase、Redis 和 MongoDB)的概念以及不同点&#xff1b;熟练使用四种数据库操作常用的 Shell 命令&#xff1b;熟悉四种数据库操作常用的 Java API。 实验平台 操作系统&#xff1a;centos7Hadoop 版本&#…

基于Linux C++多线程服务器 + Qt上位机开发 + STM32 + 8266WIFI的智慧无人超市

前言 针对传统超市购物车结账排队时间长、付款效率低的问题&#xff0c;提出了一种更符合现代社会人们购物方式-基于RFID的自助收银系统。习惯了快节奏生活的人们都会选择自助收银机结账&#xff0c;理由显而易见&#xff1a;自助收银机结账很方便&#xff0c;几乎不用排队&am…

启发式算法解魔方——python

未完待续&#xff0c;填坑ing…… 魔方操作的表示——辛马斯特标记 辛马斯特标记&#xff08;Singmaster Notation&#xff09;是一种用于描述魔方和类似拼图的转动操作的标记系统。它以大卫辛马斯特&#xff08;David Singmaster&#xff09;的名字命名&#xff0c;辛马斯特…

辐射传输基础理论详解与LST反演方法

地表温度LST(Land Surface Temperature)是区域和全球尺度上陆地表层系统过程的关键参数&#xff0c;它综合了地表与大气的相互作用以及大气和陆地之间能量交换的结果。地表温度作为众多基础学科和应用领域的一个关键参数&#xff0c;能 够提供地表能量平衡状态的时空变化信息&a…

01-JDK安装(Window环境和Linux环境)

1. Windows环境安装JDK 1.1 Oracle官网下载需要版本的JDK 官网传送门https://www.oracle.com/java/technologies/downloads/#java8-windows下载完成之后 以管理员身份&#xff08;管理员&#xff01;管理员&#xff01;&#xff09;运行下载的exe文件 期间修改需要安装的路径…

书生浦语训练营第2期-第6节作业

一、基础作业 1.1 Lagent Web Demo 使用 1.2 AgentLego 直接使用部分 二、进阶作业 2.1 AgentLego WebUI 使用 2.2 使用 Lagent 自定义工具 2.3 使用AgentLego自定义工具

Linux内核中的内联汇编

目录 一、概述 二、内联汇编语法 1、内联汇编常规语法说明 ①、 asm ② 、asm-qualifiers ③ 、AssemblerTemplate ④、 OutputOperands ⑤、 InputOperands ⑥ 、Clobbers 2、内联汇编中的earlyclobber 3、根据语法编写一个简单的add函数 总结 一、概述 C语言在线…

JSON.toJSONString() 输出 “$ref“:“$[0]“问题解决及原因分析

一、背景 在构建一个公共的批处理方法类的时候&#xff0c;在测试输出的时候&#xff0c;打印了" r e f " : " ref":" ref":"[0][0]"的内容&#xff0c;这让我比较疑惑。不由得继续了下去… 二、问题分析 首先&#xff0c;我们需要…

c语言:打印任意行数的菱形

例如&#xff1a;以下图片形式 #include <stdio.h> int main() {int line 0;scanf_s("%d", &line);int i 0;//打印上半部分for (i 0; i < line; i){//打印空格数int j 0;for (j 0; j < line - 1 - i; j){printf(" ");}//打印*数量for…

饥荒服务器搭建centos

服务器环境需要64位32位不可用 uname -r 查看服务器版本 更新yum sudo yum update 安装依赖环境 sudo yum -y install glibc.i686 libstdc.i686 libcurl4-gnutls-dev.i686 libcurl.i686 screen 安装steam cd /home && mkdir steamcmd && cd steamcmd 国…

Istio基础知识

一、什么是Istio Istio 提供⼀种简单的⽅式来为已部署的服务建⽴⽹络&#xff0c;该⽹络具有 负载均衡、服务间认证、监控等功能&#xff0c;只需要对服务的代码进⾏⼀点或不需要做任何改动。想要让服务⽀持 Istio&#xff0c;只需要在您的环境中部署⼀个特殊的 sidecar 代 理&…