2 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
這個(gè)正則表達(dá)式保證你的字符串只包含一個(gè)標(biāo)簽,假設(shè) HTML 輸入格式良好。
首字母<(.+)>
捕獲您的標(biāo)簽的名稱。捕獲組還將獲得它可以獲得的任何屬性。由于+
是一個(gè)貪婪的量詞,如果可以的話,它將捕獲多個(gè)標(biāo)簽。
尾隨</\\1>
與第一組捕獲的任何內(nèi)容相匹配。這就是為什么如果您的 HTML 格式正確,則表達(dá)式不會(huì)捕獲多個(gè)標(biāo)簽或帶有屬性的標(biāo)簽:
開始標(biāo)簽
<h1>
,結(jié)束標(biāo)簽</h1>
?開始標(biāo)簽
<h1 attr="value">
,結(jié)束標(biāo)簽</h1>
,但期待</h1 attr="value">
開始標(biāo)簽
<h1><h2>
,結(jié)束標(biāo)簽</h2></h1>
,但期待</h1><h2>
這就是為什么標(biāo)簽可以.+
相當(dāng)安全地匹配,而內(nèi)容必須匹配[^<]+
。您要確保不抓取內(nèi)容中的任何停留標(biāo)簽,但允許使用任何其他字符。[^<]+
(發(fā)音?!安?code><,至少一次)允許類似的事情!
,但[A-za-z]
肯定不會(huì)。

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果輸入字符串是,Hello World!
則([a-zA-z]+)
由于感嘆號(hào) (!) 和空格字符而無(wú)法正確匹配。
更清楚地說(shuō),這是每個(gè)正則表達(dá)式的含義:
([a-zA-Z]+)
匹配由字母(大寫或小寫)組成的序列(1 個(gè)或多個(gè)字符)([^<]+)
只要字符不是< 字符,就匹配一個(gè)序列(1 個(gè)或多個(gè)字符)
添加回答
舉報(bào)