正则表达式零宽断言

在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了。

(?=exp):零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。

#匹配后面为_path,结果为product
  'product_path'.scan /(product)(?=_path)/ 

(?<=exp):零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp

#匹配前面为name:,结果为wangfei
'name:wangfei'.scan /(?<=name:)(wangfei)/ #wangfei

(?!exp):零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp。

#匹配后面不是_path
'product_path'.scan /(product)(?!_path)/  #nil
#匹配后面不是_url
'product_path'.scan /(product)(?!_url)/  #product

(?<!exp):零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp

#匹配前面不是name:
'name:angelica'.scan /(?<!name:)(angelica)/  #nil
#匹配前面不是nick_name:
'name:angelica'.scan /(?<!nick_name:)(angelica)/#angelica
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 捕获### (exp):匹配并且捕获exp表达式的内容,捕获内容存档在全局变量$1-$99里面。(?<name>e...
    YongpingZhao阅读 382评论 0 0
  • 注:本篇文章只为方便查看,特此保留,如有冒犯,敬请谅解!!! 本文目标 30分钟内让你明白正则表达式是什么,并对它...
    阿杰Alex阅读 1,511评论 0 10
  • 零宽 零宽说的是这个表达式不匹配任何字符,只匹配一个位置 断言 我要匹配的字符串一定要满足这个条件 一下采用pyt...
    Mr_Normal阅读 235评论 0 1
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,181评论 0 9
  • 正则表达式 1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s...
    Sweet苗阅读 396评论 0 0