空字符串断言

最近稍微研究了下正则表达式,在网上看了一篇正则表达式30分钟入门教程.

教程点这里~ 30分钟入门

 

在平衡组中讲到(?!)断言一定匹配不成功...

 

想了半天不明白....我是这么理解(?!)断言的...

a(?!b)能够匹配右边不是b的a,那a(?!)的意思就是匹配右边什么都没有的a.....

然后我输入了qwea发现不能匹配..感觉非常奇怪...纠结了2,3天...后来发现是我理解错了....


正确的理解应该是匹配右边不是空字符串的a...空字符串是到处都存在的,比如"abc"中有4个空字符串,a前面和后面,c前面和后面.所以a(?!)的理解应该是匹配右边不是空字符串的a,因为a的右边一定有空串,所以匹配一定失败..四种断言都有这种特性.


(?!)和(?<!)一定是失败的.

(?!=)和(?=)一定是成功的.


这种用法的意义在于可以根据情况让正则表达式失败..在平衡组里,如果一些字符出现数量不相等的话,可以使用这个技巧强制将匹配失败....语言有点难描述,贴个例子吧...我觉得讲的蛮好的....

https://msdn.microsoft.com/zh-cn/library/bs2twtah(v=vs.110).aspx


差不多就是这样...

转载于:https://www.cnblogs.com/abcwt112/p/4564862.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值