非捕获元讲解

正则表达式语法中,有一种称为”非捕获元“。是基于子表达式的语法规则;

举例1 (pattern)

匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到。

举例2 (?:pattern)

匹配 pattern 但不获取匹配结果。

举例3 (?=pattern)

正向肯定预查(look ahead positive assert)。这是一个非获取匹配。

举例4 (?!pattern)

正向否定预查(negative assert)。这是一个非获取匹配。

举例5 (?<=pattern) 反向(look behind)肯定预查,与正向肯定预查(?=pattern)类似,只是方向相反。这是一个非获取匹配。
举例6 (?<!pattern) 反向否定预查,与正向否定预查(?!pattern)类似,只是方向相反。这是一个非获取匹配。

举例1:

表达式:    /win(1|2|3)/g字符串:    "win4win3win2"共找到 2 处匹配:
win3
win2

举例2:

表达式:    /win(?:1|2|3)/g字符串:    "win4win3win2"共找到 2 处匹配:
win3
win2

类似于表达式:/win1|win2|win3/g     或者是    /win(1|2|3)/g

举例3:正向 肯定

表达式:    /win(?=1|2|3)/g字符串:    "win4win3win2"共找到 2 处匹配:
win
win

能够匹配到win3 win2的win,不能匹配win4的win;

举例4:正向 否定

表达式:    /win(?!1|2|3)/g字符串:    "win4win3win2"共找到 1 处匹配:
win

能够匹配到win4的win,不能匹配win2 win3的win;

举例5:反向 肯定

表达式:    /(?<=1|2|3)win/g字符串:    "4win3win2win"共找到 2 处匹配:
win
win

能够匹配到3win 2win的win,不能匹配4win的win;

举例6:反向 否定

表达式:    /(?<!1|2|3)win/g字符串:    "4win3win2win"共找到 1 处匹配:
win

能够匹配到4win的win,不能匹配2win 3win的win;

正则表达式 —— 非捕获元相关推荐

  1. 正则表达式 非捕获性分组

    非捕获性分组语法为(?:pattern),即将pattern部分组合成一个可统一操作的组合项,但不把这部分内容当作子匹配捕获,匹配的内容部进行编号也不存储在缓冲区中供以后使用.非捕获性分组方法在必须进 ...

  2. 正则表达式中的非捕获组是什么?

    非捕获组(即(?:) )如何在正则表达式中使用,它们有什么用? #1楼 在复杂的正则表达式中,您可能会希望使用大量的组,其中一些用于重复匹配,而另一些则提供反向引用. 默认情况下,与每个组匹配的文本会 ...

  3. 【正则表达式系列】一些概念(字符组、捕获组、非捕获组)

    前言 本文介绍一些正则中的常用名词以及对应概念,譬如字符组,捕获组.非捕获组.反向引用.转义和\s \b等 大纲 字符组 捕获组 反向引用 非捕获组 ..\s和\S \b \转义 字符组 []字符组表 ...

  4. 正则表达式捕获分组和非捕获分组及用法

    正则表达式 (regular expression)是一个描述字符模式的对象. ECMAScript 的 RegExp 类 表示正则表达式,而 String 和 RegExp 都定义了使用正则表达式进 ...

  5. php 正则匹配分组命名,正则表达式、分组、子匹配(子模式)、非捕获子匹配(子模式)...

    前面我们知道正则表达式有很多元字符表示匹配次数(量词),都是可以重复匹配前面出现的单个字符次数.有时候,我们可能需要匹配一组多个字符一起出现的次数.这个时候,我们需要分组了.就是用小括号来括起这些字符 ...

  6. java正则表达式基础 关于特殊字符、捕获组和非捕获匹配

    JAVA正则表达式 我个人认为正则表达式是很好用很强大的,在编写程序中很多地方都用的到,这里有一些我学习的基础理解和大家分享,欢迎一起讨论. 正则表达式是一种用来表达语法规则的字符串,是一种字符串匹配 ...

  7. 正则表达式中的捕获非捕获匹配

    正则表达式中的非捕获匹配 (?:pattern) (?=pattern) (?!pattern) (?<=pattern) (?<!pattern) 在正则表达之使用中,经常会用到捕获匹配 ...

  8. 正则表达式的非捕获性分组

    非捕获性分组,通常由一对括号加上 ?: 加上子表达式组成,非捕获性分组不会创建反向引用,就好像没有括号一样.如下: var color = "#808080"; var outpu ...

  9. 正则表达式之非捕获组

    有什么用 非捕获类,在正则很简单时,没什么用,只有在正则中大量使用()时才有用 详细说明-举例说明 匹配2013-05-07,你可以用\d{4}-\d{2}-\d{2},你也可以加个括号(\d{4}) ...

最新文章

  1. 加密解密php,PHP实现的加密解密处理类
  2. 如何学习Python开源项目代码
  3. mybatis 一二事(1) - 简单介绍
  4. How to use price determination in Quotation scenario
  5. iOS开发简单高效的数据存储
  6. C/S架构网络聊天软件——Java Chat Application 用java做一个聊天机器人
  7. 不裁员也好意思叫互联网公司?
  8. Mobile Phone Network CodeForces - 1023F(并查集lca+修改环)
  9. Pytorch的BCEWithLogitsLoss函数中忽视标签怎么实现
  10. 蓝桥杯 ALGO-79 算法训练 删除数组零元素
  11. new Image().src资源重复请求问题
  12. 3、简单了解Angular应用的启动过程
  13. difference softreference and weakreference
  14. 基于java的药品库房管理系统
  15. DELL披露MacBook Pro杀手
  16. 怎样用sc命令运行服务器,windows中的sc控制服务命令
  17. 贪婪洞窟2怎么在电脑上玩 贪婪洞窟2安卓模拟器教程
  18. 图像颜色空间转换--RGB to Lαβ
  19. 基于EasyNVR实现RTSP_Onvif监控摄像头Web无插件化直播监控
  20. VHDL实现USART

热门文章

  1. python3全栈开发-并发编程,多进程的基本操作
  2. 锋利的Jquery摘要
  3. iOS开发----UI部分----iPhone各类屏幕的分辨率
  4. 启动Tomcat服务时,出现org.apache.catalina.startup.VersionLoggerListener报错
  5. 【错误分析】NX error status: 32
  6. frame.origin和frame.size的心得
  7. [Hadoop] - 异常Cannot obtain block length for LocatedBlock
  8. 双系统(win7+ubuntu)ubuntu磁盘空间不足时解决方法
  9. ubuntu 12.04 ubuntu System program problem detected 解决方法
  10. redis集群如何解决重启不了的问题