作者Numino (紫氣東來)
看板Ajax
標題[問題] js中如何用正規表達式匹配成對的div
時間Sun May 12 16:49:39 2019
有一段字串這樣:
var strHTML="...<div id='div1'>...<div id='div2'>...</div>
</div><div id='div3'>...</div>..."
怎麼才能取到 <div id='div1'>......</div> 裡的內容
用 /<div id='div1'>([\s\S]+)<\/div>/ 會取太多
用 /<div id='div1'>([\s\S]+?)<\/div>/ 會取太少
需要取到配對的那個 </div>
想了好久解不出
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.120.160.203
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Ajax/M.1557650983.A.19E.html
1F:→ y3k: 如果你是在html上處理 用document.createElement()比較快 05/12 18:45
2F:→ mackliu: 不太懂為什麼要這樣處理,你是要取代內容還是產生元件? 05/12 23:30
3F:→ Hevak: HTML 要用 HTML parser,可以考慮例如 cheerio 或 jquery, 05/13 15:22
4F:→ Hevak: 不要用 regex 05/13 15:22
5F:→ Hevak: 不然直接先開 element 再 set innerHTML 再往下用 DOM API 05/13 15:23
6F:→ Hevak: 爬也是個方式 05/13 15:23
7F:推 eight0: emmet 有一個 htmlMatcher 專門用來尋找對應的 HTML tag 05/13 17:23
10F:→ NobleDino: 這個行為正規表述無法查到的 05/28 16:55
11F:→ NobleDino: 這是屬於上下文無關文法(context free grammar) 05/28 16:55
12F:→ NobleDino: 想不出來當然是正常的,另外正規為CFG子集 05/28 16:59