正则表达式不匹配某些字符

使用?!——否定式向前查找

不匹配abc

(?!.*abc).*

参考:

https://stackoverflow.com/questions/406230/regular-expression-to-match-a-line-that-doesnt-contain-a-word/24743196#24743196

https://www.cnblogs.com/wangqiguo/archive/2012/05/08/2486548.html

正则表达式向前查找与向后查找:

  1. 向前查找:根据要匹配的字符序列后面存在一个特定的字符序列(肯定式向前查找)或不存在一个特定的序列(否定式向前查找)来决定是否匹配。.NET将向前查找称之为零宽度向前查找断言

    对于向前查找,出现在指定项之后的字符序列不会被正则表达式引擎返回

  2. 向后查找:一个要匹配的字符序列前面有或者没有指定的字符序列

  3. (?元字符

    (?:...) 非捕获组

    (?=...) 肯定式向前查找

    (?!...) 否定式向前查找

    (?<=...) 肯定式向后查找

    (?<!...) 否定式向后查找

  4. 肯定式向前查找

    eg1. 匹配后面有一个Traing字符序列的字符序列Start

    正则模式:Start(?= Traing)

    eg2. 匹配字符序列sentence,并且在此序列后还存在一个字符序列sequence

    正则模式:sentence(?=.*sequence.*)

  5. 否定式向前查找

    eg1. 匹配后面不存在Traing字符序列的字符序列Start

    正则模式:Start(?!\bTraing\b)

  6. 肯定式向后查找

    eg.匹配前面有Dr.Mr的字符序列Tian

    正则模式:((?<=Dr. )|(?<=Mr ))Tian

  7. 否定式向后查找

    eg.匹配前面没有Dr.的字符序列Tian

    正则模式:(?<!Dr. ) Tian

  8. 为大数添加逗号增强可读性

    eg.为>1000的数每三位添加一个逗号(1234→1,234)

    正则模式:(?<=\d)(?=(\d{3})+\b)

    该模式表示:查找这样一个位置,改位置的前面有一个数字,且后面有一个或多个3个数字组成的字符序列,最后各一个单词结束符。

参考:

http://jaychenfe.leanote.com/post/33f544cfae12

http://www.cnblogs.com/youxin/archive/2013/04/10/3012146.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com

文章标题: 正则表达式不匹配某些字符

文章字数: 497

本文作者: Jun

发布时间: 2018-06-29, 10:49:00

最后更新: 2018-07-13, 11:45:53

原始链接: http://yoursite.com/2018/06/29/正则表达式不匹配某些字符/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏