Home  >  Article  >  Web Front-end  >  Except for the syntax of the capturing group, other syntaxes are not verification of the capturing group_regular expression

Except for the syntax of the capturing group, other syntaxes are not verification of the capturing group_regular expression

微波
微波Original
2017-06-28 13:41:44910browse

这篇文章主要介绍了除捕获组的语法外,其它的(?...)语法都不是捕获组的验证,需要的朋友可以参考下

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

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

文本内容

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

正则表达式

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

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

文本内容

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

正则表达式

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

匹配结果

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

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

文本内容

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

正则表达式

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

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

The above is the detailed content of Except for the syntax of the capturing group, other syntaxes are not verification of the capturing group_regular expression. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn