正则表达式使用技巧

一、不包含某些字符串

经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用,^(hede)来过滤”hede”字串,但这种写法是错误的。我们可以这样写:[^hede],但这样的正则表达式完全是另外一个意思,它的意思是字符串里不能包含‘h',‘e',‘d'三个但字符。那什么样的正则表达式能过滤出不包含完整“hello”字串的信息呢?

事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确。就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问题:

比如有几句话:

今天超市猪肉卖23元

今天天气真好

我们希望匹配的句子中不含“猪肉”的句子,

可用

(?!猪肉).*$

每个空字符都会检查其前面的字符串是否不是‘猪肉',如果不是,这.(点号)就是匹配捕捉这个字符。表达式(?!猪肉).只执行一次,所以,我们将这个表达式用括号包裹成组(group),然后用*(星号)修饰——匹配0次或多次,这种正则表达式的“查找”也叫做“zero-width-assertions”(零宽度断言),因为它不会捕获任何的字符,只是判断

原文地址:https://www.cnblogs.com/zongfa/p/13033375.html