正则表达式-断言

前言

    有时候我们需要使用正则查找某些内容(但又不包含这些内容)之前或之后的东西,也就是说他们像\b、^、$那样用于指定一个位置,这个位置应该满足一个条件(即断言),
因此他们也被称为零宽断言。


1.向前肯定断言

  (?=pattern) 它断言自身出现的位置的后面能匹配表达式pattern,比如 \b\w+(?=ing\b), 匹配以ing结尾的单词的前面的不包含ing的部分,如查找 sleeping和cooking,
它会匹配出sleep和cook.

2.向前否定断言

  (?!pattern) 它断言自身出现的位置的后面不匹配表达式pattern,比如 \b\w+(?!=,), 匹配所有不以","结尾的单词的部分。

3.向后肯定断言

  (?<=pattern) 它断言自身出现的位置的前面能匹配表达式pattern,比如 (?<=\\)", 匹配所有被\转义过的双引号。

4.向后否定断言

  (?<!pattern) 它断言自身出现的位置的前面不匹配表达式pattern,比如 (?<!\\)", 匹配所有没有被\转义过的双引号。


  当然,使用正则表达式查找的时候你完全可以认为这是多此一举,用小括号加group就可以提取出来,没错。但是当你需要匹配并替换的时候就要用到上面的正则语法功能。
像我之前有个需求就是要求转义一个字符串中所有没有被转义过的双引号,如果使用普通的替换那么就会将已转义的双引号多次转义,这显然不符合需求。

end

转载于:https://my.oschina.net/nalenwind/blog/535342

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值