正则表达式中的正向预查和负向预查

 更新时间:2019年08月05日 14:08:29   作者:wjwdive  
这篇文章主要介绍了正则表达式中的正向预查和负向预查,本文通过几个场景给大家分析 ,需要的朋友可以参考下

日常工作当中,大多数IDE自带的查找工作都能满足大多数需要。

加上正则匹配简直如虎添翼。匹配个邮箱,电话号什么的不在话下。有时候我们可能会遇到稍微特殊的场景。

Windows 1.03 and Windows 2.0 fisrt Released in 1985 and 1987 respectively.
Windows 95 and Windows 98 are the successor.
Then Windows 2000 and Windows Xp Windows appeared.
Windows Vista is the Latest version of the family.

例如上面这一段话,有几个场景

1、我们想匹配 Windows 后面是数字版本号的Windows 和这些字符。如 Windows 1.03 等等。

等 用?: 即 Windwos (?:[\d.]+\b)如下图,这是直接匹配结果 , 匹配出了Windows 1.03,Windows 2.0, Windows 95,Windows 98,Windows 2000,但是没有匹配到Windows Xp, Windows Vista,等

2、我们只想匹配满足这些条件的'Window' ,但不包括后面的字符

用 (?= pattern) 即 Windows (?=[\d.]+\b) 他把Windows的空格也匹配了。这一过程就是正向匹配。

3、如果我想匹配这些Windows 字段,它后面跟的不是数字或者版本号,我改用

(?!pattern)即 Windows (?![\d.]+\b) 这一过程叫做正向匹配不满足(我觉得这样叫跟容易理解), 它匹配后面不跟着满足pattern( [\d.]+\b) 的Windows。

4、我想匹配Windows前面是数字的Windows.我们用 (?<=[\d].) Windows 这叫逆向匹配(<左箭头就说明了是从右往左,好记吧),他们匹配Windows前面是一个或者多个数字的'Windows'.

如图这里只匹配到了 和11挨着的 Windows。

5、我想匹配Windows前面不是数字的Windows。我想匹配 Windows 前面不是数字的Windows ,通常叫做逆向不匹配。我把它叫做逆向匹配不满足pattern。

用(?<! pattern)keyword.

它匹配到了 在11之后的 Windows之外的所有Windows(不包括行首的Windows)。

关于零宽断言,我认为这个说法让人觉得很学术,不易理解。我的理解是,把零宽理解为关键字前面或者后面的正则表达式匹配出来的字符不会被显示出来,也不被用来当做常规的子查询。 它只起到判断作用。

总结

以上所述是小编给大家介绍的正则表达式中的正向预查和负向预查,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • 正则表达式的语法

    正则表达式的语法

    正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等
    2006-09-09
  • jQuery正则表达式的使用方法步骤详解

    jQuery正则表达式的使用方法步骤详解

    本文主要和大家分享的就是jQuery学习中正则的使用,正则在jquery里面并没有比JavaScript多哪些知识,基本上是一样的,只是选择器更好了一点,一起来看看吧
    2016-12-12
  • python 正则表达式 re.sub & re.subn

    python 正则表达式 re.sub & re.subn

    正则表达式一个比较常见的用途是找到所有模式匹配的字符串并用不同的字符串来替换它们。sub方法提供一个替换值,可以是字符串或函数,和一个要被处理的字符串。这篇文章主要介绍了python 正则表达式 re.sub & re.subn,需要的朋友可以参考下
    2017-12-12
  • js正则表达式之match函数讲解

    js正则表达式之match函数讲解

    使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回
    2012-10-10
  • 通过脚本清空标签p中的class名和style

    通过脚本清空标签p中的class名和style

    通过脚本清空标签p中的class名和style...
    2006-10-10
  • JS使用正则去除字符串最后的逗号

    JS使用正则去除字符串最后的逗号

    字符串最后的逗号怎么去除,方法有很多,本文为大家介绍下使用JS正则去除字符串最后逗号,具体实现如下,感兴趣的朋友可以参考下
    2013-08-08
  • JavaScript基于正则表达式的数字判断函数

    JavaScript基于正则表达式的数字判断函数

    JavaScript基于正则表达式的数字判断函数,需要的朋友可以参考下。
    2011-01-01
  • 浅谈正则表达式回溯陷阱

    浅谈正则表达式回溯陷阱

    日常编程经常会用到正则表达式,躲不开这个陷阱,本文主要介绍了浅谈正则表达式回溯陷阱,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • JScript中正则表达函数的说明与应用

    JScript中正则表达函数的说明与应用

    JScript中正则表达函数的说明与应用...
    2006-06-06
  • php的正则表达式完全手册

    php的正则表达式完全手册

    正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。
    2011-02-02

最新评论