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

 更新时间: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)。

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

总结

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

相关文章

  • JS 正则表达式从地址中提取省市县

    JS 正则表达式从地址中提取省市县

    这篇文章主要介绍了JS 正则表达式从地址中提取省市县的实例代码,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-10-10
  • 详解正则表达式的贪婪模式与非贪婪模式

    详解正则表达式的贪婪模式与非贪婪模式

    这篇文章主要介绍了正则表达式的贪婪模式与非贪婪模式,通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Python如何使用正则表达式识别代码中的中文、英文和数字

    Python如何使用正则表达式识别代码中的中文、英文和数字

    正则表达式是一种强大的工具,可以帮助我们实现识别代码中的中文、英文和数字,本文将分三个部分详细介绍如何使用正则表达式在 Python 中识别代码中的中文、英文和数字,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • JavaScript正则表达式实现注册信息校验功能

    JavaScript正则表达式实现注册信息校验功能

    这篇文章主要介绍了JavaScript正则表达式实现注册信息校验功能,在JS中默认是模糊匹配,只要字符串包含了正则表达式的内容就返回true,本文通过案例分析给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • 通过正则表达式使用ajax检验注册信息功能

    通过正则表达式使用ajax检验注册信息功能

    这篇文章主要介绍了通过正则表达式使用ajax检验注册信息,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • js 正则学习小记之匹配字符串字面量优化篇

    js 正则学习小记之匹配字符串字面量优化篇

    昨天在《js 正则学习小记之匹配字符串字面量》谈到 /"(?:\\.|[^"])*"/ 是个不错的表达式,因为可以满足我们的要求,所以这个表达式可用,但不一定是最好的
    2020-04-04
  • 在VS2008中使用正则表达式进行查找和替换

    在VS2008中使用正则表达式进行查找和替换

    正则表达式是查找和替换文本模式的一种简洁而灵活的表示法。&nbsp;在“查找和替换”窗口中执行“快速查找”、“在文件中查找”、“快速替换”或“在文件中替换”操作时,可以在该窗口的“查找内容”和“替换为”字段中使用一组专用的正则表达式
    2016-05-05
  • 正则表达式教程之子表达式用法分析

    正则表达式教程之子表达式用法分析

    这篇文章主要介绍了正则表达式教程之子表达式用法,分析了正则表达式中子表达式的概念、功能与使用方法,需要的朋友可以参考下
    2017-01-01
  • Linux正则表达式特性详解及BRE与ERE的异同点

    Linux正则表达式特性详解及BRE与ERE的异同点

    本篇文章给大家介绍linux正则表达式特性及BRE与ERE的不同,Linux正则表达式(Regular Expression)主要遵从POSIX BRE或者POSIX ERE标准,对linux正则表达式感兴趣的朋友可以参考下本篇文章
    2015-10-10
  • 2019手机号码JS正则表达式验证实例代码

    2019手机号码JS正则表达式验证实例代码

    这篇文章主要介绍了2019手机号码JS正则表达式验证实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05

最新评论