空字符串断言

最近稍微研究了下正则表达式,在网上看了一篇正则表达式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


差不多就是这样...

posted @ 2015-06-09 23:14  abcwt112  阅读(541)  评论(0编辑  收藏  举报