正则表达式记录

文章介绍了正则表达式中*、+、?的含义,它们分别表示匹配0或多次、至少一次和最多一次。同时,详细阐述了单词边界和非单词边界B的概念及匹配规则,并举例说明如何在实际场景中应用。此外,还讲解了正向预查和负向预查(?=?、?<=、?!、?<!)在过滤匹配结果时的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则用途:分割 查找 匹配 替换

1 * + ?的区别

  • *代表匹配任意次, 包括0,1,多次
  • +代表匹配最少一次, 1或者多次
  • ?代表匹配最多1次,0,1次

2 单次边界(\b和\B)

2.1 定义

首先说一下零宽: 只匹配位置, 不匹配字符,
然后我们再来谈单词边界:
何谓单词? 在JS中, 单词的定义就是\w也就是 [A-Za-z0-9_], 非单词的定义就是\W, 非常简洁.
何谓边界? 不同为之界. \w界\W, 也就是在这个位置之前是单词, 那么在这个位置之后就是非单词, 反之也是这样.
如下图,\b匹配的位置一共有4个,用flag替换后位置如下,详细解释下四个匹配到的位置原因(相邻的边界合为1个)

  • 1的左边为开头,算一个边界,右边是2,都是\w,故右边没有
  • 2的左边是1,相同,右边是3,相同
  • 3的左边是2,相同,右边是逗号,逗号不属于\w,故3的右边有一个边界
  • 逗号左边为3,算一个边界,这个位置上已经有一个了,故合并,右边为4,不同,故右边有一个边界
  • 4的左边为逗号,算一个边界,这个位置上已经有一个了,故合并,右边为5,相同
  • 5的左右两边都是数字
  • 6的左边为数字,相同,右边为结尾,故有一个边界
    在这里插入图片描述

2.2 使用场景

匹配apt

  • 匹配 Chapter 中的字符串 apt,但不匹配 aptitude 中的字符串 apt, \Bapt
  • 匹配 aptitude 中的字符串 apt,但不匹配 Chapter 中的字符串 apt, \bapt

3 ?=、?<=、?!、?<!作用

总的来说就是判断两个表达式关系的, 其实就是可能存在多个匹配结果,但是需要再过滤一下,

  • exp1(?=exp2):查找 exp2 前面的 exp1。类似找以exp2结尾的,但不包括exp2
  • (?<=exp2)exp1:查找 exp2 后面的 exp1。类似找以exp2开头的,但不包括exp2
  • exp1(?!exp2):查找后面不是 exp2 的 exp1。
  • (?<!exp2)exp1:查找前面不是 exp2 的 exp1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值