正则表达式记录

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

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。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值