正则表达式里字符串”不包含”匹配技巧
经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用, 事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确。就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问题: ^((?!hede).)*$ 上面这个表达式就能过滤出不包含‘hede’字串的信息。我上面也说了,这种写法并不是正则表达式“擅长”的用法,但它是可以这样用的。 解释一个字符串是由n个字符组成的。在每个字符之前和之后,都有一个空字符。这样,一个由n个字符组成的字符串就有n+1个空字符串。我们来看一下“ABhedeCD”这个字符串: +--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+S=|e1|A|e2|B|e3|h|e4|e|e5|d|e6|e|e7|C|e8|D|e9|+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+index01234567 所有的e编号的位置都是空字符。表达式 在上面的例子里,每个空字符都会检查其前面的字符串是否不是‘hede’,如果不是,这 你可以理解,正则表达式 在正则表达式里, [英文原文:Regular expression to match string not containing a word?] 文章来自:外刊IT评论 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |