除捕获组的语法外,其它的(?...)语法都不是捕获组的验证

 更新时间:2017年04月08日 23:39:47   投稿:mdxy-dxy  
这篇文章主要介绍了除捕获组的语法外,其它的(?...)语法都不是捕获组的验证,需要的朋友可以参考下

在一篇正则表达式技术文档中看到下面内容:

“外需要说明的一点是,除(Expression)和(?<name>Expression)语法外,其它的(?...)语法都不是捕获组。”
这个内容是好理解的,但疑惑的是,该文章作者在另一篇相关正则的技术文章中,其中一个这样的实例,着实让我迷惑了一番:

文本内容

<td>a</td><td>b</td> 

正则表达式

(?is)<td>(?:(?!</td>).)*</td> 

注意上面正则表达式的代码,他对“(?!</td>).”进行“强制非捕获组”,我在短信中告诉他,可以这样写:(?is)<td>((?!</td>).)*</td>
两天仍未见他回复,于是在回过头来研究一下他代码,起初我将重点放在“(?!</td>)”这个括号算不算捕获组。但是在看一次上面技术文章的代码我才反应过来。他不是针对(?!</td>)强制为非捕获组,而是将(?!</td>).强制为非捕获组,于是我就做了下面的测试:

文本内容

<td>a</td><td>a</td>

正则表达式

<td>((?!</td>).)*</td><td>(\1)*</td>

匹配结果

<td>a</td><td>a</td>

这就证明,如果不对“(?!</td>).”进行强制为非捕获组,它是会捕获的,而这个捕获,我根本不需要它。
下面,我在测试一下,除了(Expression)和(?<name>Expression)语法外,其它的,如环视,它算不算捕获组。

文本内容

<td>a</td><td>a</td> 

正则表达式

<td>((?!</td>).)*</td><td>(\2.)*</td>

匹配结果:不匹配
如有不同见解,欢迎讨论。

相关文章

  • 15/18位身份证号码验证的正则表达式总结(详细版)

    15/18位身份证号码验证的正则表达式总结(详细版)

    需要一个简单的验证身份证号的正则表达式,从网上查了很多,都有问题,所以干脆自己写一个,下面这篇文章主要给大家分享了关于15/18位身份证号码验证的正则表达式,文中介绍的非常详细,需要的朋友可以参考下。
    2017-03-03
  • Python使用正则表达式去除(过滤)HTML标签提取文字功能

    Python使用正则表达式去除(过滤)HTML标签提取文字功能

    这篇文章主要介绍了Python使用正则表达式去除(过滤)HTML标签提取文字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • 正则表达式(RegExp)判断文本框中是否包含特殊符号

    正则表达式(RegExp)判断文本框中是否包含特殊符号

    有时,我们希望判断文本框中用户输入的字符是否含有特殊符号(*/#$@),就像用户注册时密码框的填写。下面小编给大家分享一个demo,感兴趣的朋友一起看看吧
    2019-10-10
  • ExtJS正则表达式使用说明

    ExtJS正则表达式使用说明

    正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些ExtJS常用的表达式收集于此,以备不时之需
    2013-11-11
  • 过滤所有HTML代码和CSS,JS

    过滤所有HTML代码和CSS,JS

    过滤所有HTML代码和CSS,JS...
    2006-08-08
  • php与javascript正则匹配中文的方法分析

    php与javascript正则匹配中文的方法分析

    这篇文章主要介绍了php与javascript正则匹配中文的方法,结合实例形式分析了针对utf-8与GBK编码情况下的php、javascript正则匹配中文操作技巧,需要的朋友可以参考下
    2017-03-03
  • javascript 正则修正符

    javascript 正则修正符

    javascript的正则修正符一般人都知道有两个:i、匹配部分大小写,g、匹配多次。
    2009-03-03
  • 正则表达式教程之重复匹配详解

    正则表达式教程之重复匹配详解

    这篇文章主要介绍了正则表达式教程之重复匹配,结合实例形式分析了正则表达式重复匹配及防止过度匹配相关技巧,需要的朋友可以参考下
    2017-01-01
  • 正则中需要转义的特殊字符小结

    正则中需要转义的特殊字符小结

    正则表达式中的特殊字符,就是一些有特殊含义的字符,如“*.txt”中的*,简单的说就是表示任何字符串的意思
    2012-10-10
  • Java正则表达式里隐藏的陷阱

    Java正则表达式里隐藏的陷阱

    正则表达式是一个很方便的匹配符号,但要实现这么复杂,功能如此强大的匹配语法,就必须要有一套算法来实现,而实现这套算法的东西就叫做正则表达式引擎,下面给大家分享藏在正则表达式里的陷阱,一起看看吧
    2021-06-06

最新评论