最近稍微研究了下正则表达式,在网上看了一篇正则表达式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
差不多就是这样...
时间: 2024-12-10 08:02:33