<!DOCTYPE html>
<html>
<head>
<title>内容</title>
</head>
<body>
中文
<p>内容<i>内容</i></p>
</body>
</html>
將標籤裡面的內容替換為
<!DOCTYPE html>
<html>
<head>
<title>{{#内容#}}</title>
</head>
<body>
{{#中文#}}
<p>{{#内容#}}<i>{{#内容#}}</i></p>
</body>
</html>
求解正規怎麼寫?
第一,學過編譯原理的話,你就會知道,正規是沒有能力處理巢狀的資料結構的。也就是說,你想透過正規實現【選取 body 中嵌套的 p 的第一個 i 標籤】這樣的需求,在原理上是行不通的。
第二,你要處理的是一個結構化的 DOM 文本,因此可以使用 jQuery 的 parseHTML 方法來實作。透過 jQuery parse 後得到的物件是可以使用 $ 來進一步選擇 p 或 i 等節點的。這就能夠簡單有效地解決你的文字替換問題了。
如果你在 Node 服務端,那麼 jQuery 換成 cheerio 即可。
如果只在當前你給的測試文本裡你想做替換,因為情況比較簡單,所以只要寫個([u4e00-u9fa5]+)這樣的正則匹配用{{#$1#}}去替換就行