正则表达式之匹配不存在特定字符的字符串

作为一名不经常使用正则表达式的程序员,想用最简单的语言来描述否定匹配,不过发现确实不是那么好理解。还是按照自己知道的来描述吧。

正则规则描述

[ ] :表示范围,匹配其中任何一个
{ }:表示重复匹配多次。
( ): 表示分组,意思就是括号内是一个整体。

关于匹配

(?:pattern)

非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例>>如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。

(?=pattern)

非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

(?!pattern)

非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。

(?<=pattern)

非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。

(?<!pattern)

非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。这个地方不正确,有问题

这些都是来源于网上,前人已经总结的很好了。前人栽树,后人乘凉。我就乘乘凉好了。O(∩_∩)O哈哈~

本次使用 (?!pattern) 匹配,显而易见它是匹配下一个字符串来判断本次的匹配是否成功。当然这是一个否定匹配。

问题

在文档中匹配出,不包含“hello”的字符串。

mm,bn,hello,ssdenl.
sdfsdf,dfdf,dfdfe,ggg.
sdfd,gfgf
dfdfgfgdfgsdfgsdfg
dfgfdg,sdfsdfdhello.sdfasdfas/
sdfsdfdfgdfgdsfhellosdfasdfasdf
sdfasdfdfgffghjdkfjglfdg

其中第1,5,6行包含有“hello”字符串。当然这不是重点,重点是怎么来写这个正则表达式。
当然,结论是:

^(?!.*hello).*$

运行效果:


image.png

将包含有“hello”的字符串全部排除掉了。这样就实现了我们想要的效果。
_

简明解释一下,这个语句的意思:
从头开始匹配,否定匹配任意字符到“hello”,然后匹配任意字符到尾部结束。

大功告成,回家睡觉。O(∩_∩)O哈哈~

推荐阅读更多精彩内容

  • 正则表达式 由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字...
    yshenhn阅读 233评论 0 0
  • iOS -正则表达式的简单使用 ✨建议收藏,用到时候一查就明白了 下面两个方法我用的也不是很熟练,如果有懂得朋友欢...
    xx_cc阅读 7,836评论 17 175
  • 来源:lady-奕奕的博客发布时间:2015-02-09 原文链接:http://www.admin10000.c...
    天地不仁以万物为刍狗阅读 296评论 0 0
  • 开发之前肯定是要安装nodejs的, 这个根据你的电脑系统去官网下载安装即可 https://nodejs.org...
    rosekissyou阅读 914评论 0 0
  • 听完这篇演讲我只想到一个词就是身强志坚!一个曾经靠嘴吃饭的著名影评人在做了三次癌症手术、七次颈动脉破裂抢救后完全丧...
    喵了个喵__阅读 53评论 0 0
  • 我的早餐,因为痛风,我要忌口我最爱的豆制品,咸豆浆再见了,于是我的早餐就吃小馄饨了,我吃小馄饨很挑店,一但入口不好...
    夕岚无处所阅读 70评论 0 1
  • 线程的概念 进程内相对独立的、拥有独立的堆栈和局部变量的的可执行单元。 线程的生命周期 创建,阻塞,执行,等待,死...
    XP_Aaron阅读 278评论 0 2