首页 > 其他分享 >正则表达式复习四——断言

正则表达式复习四——断言

时间:2024-01-14 20:57:33浏览次数:24  
标签:位置 匹配 复习 正则表达式 mozilla 负向 零宽 断言

断言

正则表达式的断言是一种特殊的模式匹配技术,用于在匹配时对字符串进行条件性的预测。断言不会消耗输入字符串,仅仅是在匹配的位置上进行条件判断。断言分为正向断言和负向断言,分别用于描述匹配位置前面或后面的条件。

正则表达式的断言有 4 种形式:

  • (?=pattern) -- 零宽正向先行断言:匹配位置之前有指定的条件。
  • (?!pattern) -- 零宽负向先行断言:匹配位置之前没有指定的条件。
  • (?<=pattern) -- 零宽正向后行断言:匹配位置之后有指定的条件。
  • (?<!pattern) -- 零宽负向后行断言:匹配位置之后没有指定的条件。

几个名字概念说明:

  • 零宽:只匹配位置,零宽意味着断言在匹配时不会"消耗"字符串,它只是对位置进行条件判断,不包括匹配位置之前或之后的字符在匹配结果中。
  • 先行:表示断言发生在匹配位置之前。
  • 后行:表示断言发生在匹配位置之后。
  • 正向:匹配括号中的表达式,即断言所作的条件判断是肯定的,即只有当条件成立时,匹配才成功。
  • 负向:不匹配括号中的表达式,即断言所作的条件判断是否定的,即只有当条件不成立时,匹配才成功。

1. 零宽正向先行断言

零宽正向先行断言也称正向向前查找,模式:(?=pattern)

这个断言用于在匹配位置之前添加一个条件,只有当这个条件匹配成功时,整个模式才会成功匹配,但匹配位置之前的内容并不包括在匹配结果中。

实例:匹配包含 "mozilla" 后面跟着 "org" 的字符串。

/mozilla(?=org)/

在上述正则表达式中,(?=org) 表示在 "mozilla" 之后必须紧跟着 "org" 才算匹配成功。

2. 零宽负向先行断言

零宽负向先行断言也称负向向前查找,模式:(?!pattern)

这个断言用于在匹配位置之前添加一个条件,只有当这个条件不匹配时,整个模式才会成功匹配。

实例:匹配包含 "mozilla" 后面不跟着 "org" 的字符串。

/mozilla(?!org)/

在上述正则表达式中,(?!org) 表示在 "mozilla" 之后不能跟着 "org" 才算匹配成功。

3. 零宽正向后行断言

零宽正向后行断言,又称正向向后查找,模式:(?<=pattern)

这个断言用于在匹配位置之后添加一个条件,只有当这个条件匹配成功时,整个模式才会成功匹配。同样,匹配位置之后的内容并不包括在匹配结果中。

实例:匹配前面跟着 "mozilla" 的单词。

/(?<=mozilla)\w+/

在上述正则表达式中,(?<=mozilla) 表示在匹配位置之前必须有 "mozilla" 才算匹配成功。

4. 零宽负向后行断言

零宽负向后行断言,又称负向向后查找,模式:(?<!pattern)

这个断言用于在匹配位置之后添加一个条件,只有当这个条件不匹配时,整个模式才会成功匹配。

实例:匹配前面不跟着 "mozilla" 的单词。

/(?<![0-9]+)mozilla/

在上述正则表达式中,(?<![0-9]+) 表示在匹配的字符串 "mozilla" 之前不能有数字才算匹配成功。

标签:位置,匹配,复习,正则表达式,mozilla,负向,零宽,断言
From: https://www.cnblogs.com/xinjie-just/p/17958731

相关文章

  • 漫谈正则表达式
    一、概述正则表达式(RegularExpression)通常被用来检索、替换那些符合某个模式(规则)的文本。目前多种程序开发语言均支持常规的正则表达式。作为一名系统、运维工程师,正则表达在日常工作中也比较常用。因此,掌握常用的正则表达式显得十分重要。在目前的Linux系统中,通常搭配三剑客(g......
  • JavaImprove--Lesson06--正则表达式
    一.正则表达式的入门正则表达式是一些特定支付组成的,代表一个规则,简化代码,以字符的形式体现规则正则表达式,又称规则表达式,(RegularExpression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。......
  • (坚持每天写算法)基础算法复习与学习part1基础算法1-7——高精度减法(处理t=1和t>1代码的
    题目:思路:这一道题其实和高精度加法的思路是差不多的,都是使用算式进行模拟。重点:关于代码怎么写,在高精度加法那里还看不太出来(我也没有写),但是在高精度减法这里就完全可以看出来了。我们在加法算式里面,一般是A[i]+B[i]+t,但是也可以这么写:t+A[i]+B[i],我们可以先写进位......
  • 正则表达式复习三——修饰符
    修饰符在正则表达式中,修饰符是用来修改搜索模式的标志,添加在正则表达式的末尾,以控制匹配的方式。格式为:/pattern/flags。pattern为正则表达式,flags为修饰符。正则表达式的修饰符可以单独使用,也可以组合使用,它们提供了更灵活的匹配选项,适应不同的需求。1.g-全局搜索(Global)......
  • 计算机组成原理 复习笔记
    蒽,谁说不是速成指南呢。目录11Intro12-13指令系统计算机程序与指令系统语言高级语言/算法语言汇编语言机器语言冯诺依曼结构计算机指令和指令系统RISC-V指令系统架构特点特权模式14数据表示及检错纠错数据表示逻辑型数据表示字符的表示数值数据:整数、浮点数数值范围和数......
  • 无涯教程-JUnit - 使用断言
    所有的断言都在Assert类中。publicclassAssertextendsjava.lang.Object此类提供了一组断言方法,可用于编写测试。Assert类的一些重要方法如下-Sr.No.Methods&Remark1voidassertEquals(booleanexpected,booleanactual)检查两个primitives/object是否相等。2......
  • 在正则表达式中,​​[\w]​​​匹配任何字母、数字或下划线字符。它等价于字符集​​[
    在正则表达式中,[\w]匹配任何字母、数字或下划线字符。它等价于字符集[A-Za-z0-9_]。而[\w\d]匹配任何字母、数字或下划线字符和任何数字字符,等价于字符集[A-Za-z0-9]。如果你想匹配一个字符串中的所有\w字符,可以使用正则表达式/\\w+/g。区别在于是否包含下划线......
  • `^`是一个正则表达式元字符,用于匹配字符串的开头。例如,`^hello`可以匹配以"hello"开头
    ^是一个正则表达式元字符,用于匹配字符串的开头。例如,^hello可以匹配以"hello"开头的字符串。在正则表达式中,^还可以用于否定字符集,例如,[^abc]可以匹配除了"a"、“b”、"c"以外的任何字符。希望这可以帮助你!......
  • [NLP复习笔记] Transformer
    1.Transformer概述1.1整体结构\(\text{Transformer}\)主要由\(\text{Encoder}\)和\(\text{Decoder}\)两个部分组成。\(\text{Encoder}\)部分有\(N=6\)个相同的层,每层包含一个\(\text{Muti-HeadAttention}\)(多头注意力机制,由多个\(\text{Self-Attention}\)组成......
  • 数电期末复习
    目录第一章开关理论基础第二章组合逻辑第三章时序逻辑第一章开关理论基础离散量,又称数字量:离散性,按时间点采样数字量具有精度高、传输高效、易存储、易处理等优点进位基数:R,在一个数位上,规定使用的数码符号的个数叫该进位计数制的进位基数或进位模数,例如十进制R=10数......