正则表达式断言(环视)的通俗理解,一看就懂

        首先这个不属于技术文章,因为它是从新手的角度理解,也不苛求用技术术语规范表达,技术大神不要鄙视,可以无视。因为我也是小白,一开始也对断言摸不清头脑。什么正向环视,负向环视,一头雾水。言归正传!断言也叫环视,听上去就是意思是有假设和判断性质。

       知道^和$吧?代表位置,行的开头和结尾,不占用空间,就是透明空气。干脆姑且先这样理解:
(?<=xx)和(?<!xx)相当于^。
(?=xx)和(?!xx)相当于$。

只是这里的^$是附带条件的。
===================
        意思是括号外面紧挨着括号的东东有啥条件要求,把括号理解为"位置"。带左箭头<的,表示位置左边,不带的表示位置的右边。如A(?<!\d).(?!\d)B。断言是修饰条件,也可以把断言通俗理解为修饰符。这里的A和B也可以为空,或者是通配符如.?

A(?<=xx)(?<!xx)是说它们前面的字符A要具备啥条件,应该等于啥或者是什么样的A。(?=xx)(?!xx)B,是说它们后面的字符B具备啥条件,应该等于啥或者啥样的B。如这个表达式:  (.)(?!\1)(.)\2

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2-5LiL5ZWP56ul5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16
        位置上讲一个是开头,一个是结尾,只是这个开头和结尾可以在字符串中间位置人为划定。翻译过来就是开头(不)等于xx,结尾(不)等于xx。但是仅仅是约束规则,不占用字符空间,也不匹配任何东西。所以不能在后面加上数量词,加上也无效。继续如图

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2-5LiL5ZWP56ul5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16
      也可以把<理解为←左箭头,没有左箭头的视为按照正则引擎向右判断的默认方向,指向右→。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2-5LiL5ZWP56ul5a2Q,size_10,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p2-5LiL5ZWP56ul5a2Q,size_7,color_FFFFFF,t_70,g_se,x_16 

 图片来自: 灵鸟路空。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值