除捕獲組的語法外,其它的(?...)語法都不是捕獲組的驗(yàn)證
在一篇正則表達(dá)式技術(shù)文檔中看到下面內(nèi)容:
“外需要說明的一點(diǎn)是,除(Expression)和(?<name>Expression)語法外,其它的(?...)語法都不是捕獲組。”
這個(gè)內(nèi)容是好理解的,但疑惑的是,該文章作者在另一篇相關(guān)正則的技術(shù)文章中,其中一個(gè)這樣的實(shí)例,著實(shí)讓我迷惑了一番:
文本內(nèi)容
<td>a</td><td>b</td>
正則表達(dá)式
(?is)<td>(?:(?!</td>).)*</td>
注意上面正則表達(dá)式的代碼,他對(duì)“(?!</td>).”進(jìn)行“強(qiáng)制非捕獲組”,我在短信中告訴他,可以這樣寫:(?is)<td>((?!</td>).)*</td>
兩天仍未見他回復(fù),于是在回過頭來研究一下他代碼,起初我將重點(diǎn)放在“(?!</td>)”這個(gè)括號(hào)算不算捕獲組。但是在看一次上面技術(shù)文章的代碼我才反應(yīng)過來。他不是針對(duì)(?!</td>)強(qiáng)制為非捕獲組,而是將(?!</td>).強(qiáng)制為非捕獲組,于是我就做了下面的測試:
文本內(nèi)容
<td>a</td><td>a</td>
正則表達(dá)式
<td>((?!</td>).)*</td><td>(\1)*</td>
匹配結(jié)果
<td>a</td><td>a</td>
這就證明,如果不對(duì)“(?!</td>).”進(jìn)行強(qiáng)制為非捕獲組,它是會(huì)捕獲的,而這個(gè)捕獲,我根本不需要它。
下面,我在測試一下,除了(Expression)和(?<name>Expression)語法外,其它的,如環(huán)視,它算不算捕獲組。
文本內(nèi)容
<td>a</td><td>a</td>
正則表達(dá)式
<td>((?!</td>).)*</td><td>(\2.)*</td>
匹配結(jié)果:不匹配
如有不同見解,歡迎討論。
相關(guān)文章
15/18位身份證號(hào)碼驗(yàn)證的正則表達(dá)式總結(jié)(詳細(xì)版)
需要一個(gè)簡單的驗(yàn)證身份證號(hào)的正則表達(dá)式,從網(wǎng)上查了很多,都有問題,所以干脆自己寫一個(gè),下面這篇文章主要給大家分享了關(guān)于15/18位身份證號(hào)碼驗(yàn)證的正則表達(dá)式,文中介紹的非常詳細(xì),需要的朋友可以參考下。2017-03-03Python使用正則表達(dá)式去除(過濾)HTML標(biāo)簽提取文字功能
這篇文章主要介紹了Python使用正則表達(dá)式去除(過濾)HTML標(biāo)簽提取文字,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07正則表達(dá)式(RegExp)判斷文本框中是否包含特殊符號(hào)
有時(shí),我們希望判斷文本框中用戶輸入的字符是否含有特殊符號(hào)(*/#$@),就像用戶注冊時(shí)密碼框的填寫。下面小編給大家分享一個(gè)demo,感興趣的朋友一起看看吧2019-10-10