在一篇正則表達(dá)式技術(shù)文檔中看到下面內(nèi)容:
“外需要說(shuō)明的一點(diǎn)是,除(Expression)和(?name>Expression)語(yǔ)法外,其它的(?...)語(yǔ)法都不是捕獲組?!?br />
這個(gè)內(nèi)容是好理解的,但疑惑的是,該文章作者在另一篇相關(guān)正則的技術(shù)文章中,其中一個(gè)這樣的實(shí)例,著實(shí)讓我迷惑了一番:
文本內(nèi)容
正則表達(dá)式
(?is)td>(?:(?!/td>).)*/td>
注意上面正則表達(dá)式的代碼,他對(duì)“(?!/td>).”進(jìn)行“強(qiáng)制非捕獲組”,我在短信中告訴他,可以這樣寫(xiě):(?is)td>((?!/td>).)*/td>
兩天仍未見(jiàn)他回復(fù),于是在回過(guò)頭來(lái)研究一下他代碼,起初我將重點(diǎn)放在“(?!/td>)”這個(gè)括號(hào)算不算捕獲組。但是在看一次上面技術(shù)文章的代碼我才反應(yīng)過(guò)來(lái)。他不是針對(duì)(?!/td>)強(qiáng)制為非捕獲組,而是將(?!/td>).強(qiáng)制為非捕獲組,于是我就做了下面的測(cè)試:
文本內(nèi)容
正則表達(dá)式
td>((?!/td>).)*/td>td>(\1)*/td>
匹配結(jié)果
這就證明,如果不對(duì)“(?!/td>).”進(jìn)行強(qiáng)制為非捕獲組,它是會(huì)捕獲的,而這個(gè)捕獲,我根本不需要它。
下面,我在測(cè)試一下,除了(Expression)和(?name>Expression)語(yǔ)法外,其它的,如環(huán)視,它算不算捕獲組。
文本內(nèi)容
正則表達(dá)式
td>((?!/td>).)*/td>td>(\2.)*/td>
匹配結(jié)果:不匹配
如有不同見(jiàn)解,歡迎討論。