javascript - js正則替換問題
問題描述
<!DOCTYPE html><html><head> <title>內(nèi)容</title></head><body>中文<p>內(nèi)容<i>內(nèi)容</i></p></body></html>
將標(biāo)簽里面的內(nèi)容替換為
<!DOCTYPE html><html><head> <title>{{#內(nèi)容#}}</title></head><body>{{#中文#}}<p>{{#內(nèi)容#}}<i>{{#內(nèi)容#}}</i></p></body></html>
求解正則該怎么寫?
問題解答
回答1:第一,學(xué)過編譯原理的話,你就會(huì)知道,正則是沒有能力處理嵌套的數(shù)據(jù)結(jié)構(gòu)的。也就是說,你想通過正則實(shí)現(xiàn)【選中 body 中嵌套的 p 的第一個(gè) i 標(biāo)簽】這樣的需求,在原理上是行不通的。
第二,你要處理的是一個(gè)結(jié)構(gòu)化的 DOM 文本,因此可以使用 jQuery 的 parseHTML 方法來實(shí)現(xiàn)。通過 jQuery parse 后得到的對象是可以使用 $ 來進(jìn)一步選擇 p 或 i 等節(jié)點(diǎn)的。這就能夠簡單有效地解決你的文本替換問題了。
如果你在 Node 服務(wù)端,那么 jQuery 換成 cheerio 即可。
回答2:如果只在當(dāng)前你給的測試文本里你想做替換,因?yàn)榍闆r比較簡單,所以只要寫個(gè)([u4e00-u9fa5]+)這樣的正則匹配用{{#$1#}}去替換就行
相關(guān)文章:
1. node.js - mongodb查找子對象的名稱為某個(gè)值的對象的方法2. javascript - QQ第三方登錄的問題3. 測試自動(dòng)化html元素選擇器元素ID或DataAttribute [關(guān)閉]4. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?5. spring-mvc - spring-session-redis HttpSessionListener失效6. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境7. 利用IPMI遠(yuǎn)程安裝centos報(bào)錯(cuò)!8. mysql - 查詢 修改數(shù)據(jù)庫優(yōu)化問題吧9. 正在使用electron和node.js做桌面應(yīng)用,需要實(shí)時(shí)監(jiān)聽是否有網(wǎng)絡(luò)連接,node或者electron是否可以做到10. java - Spring boot 讀取 放在 jar 包外的,log4j 配置文件,系統(tǒng)有創(chuàng)建日志文件,不寫入日志信息。

網(wǎng)公網(wǎng)安備