搜尋

首頁  >  問答  >  主體

分割字串時保留特定的 html 標籤

我需要以特定數量的標籤分割字串 (<li>, <lu> ...)。我想出了正規表示式

pattern = <li>|<ul>|<ol>|<li>|<dl>|<dt>|<dd>|<h1>|<dt>|<dd>|<h1>|< h2>| <h3>|<h4>|<h5>|<h6>re.split

############################################################################ ###基本上它可以完成工作###
test_string = '<p> Some text some text some text. </p> <p> Another text another text </p>. <li> some list </li>. <ul> another list </ul>'
res = re.search(test_string, pattern) 
-> `['<p> Some text some text some text. </p> <p> Another text another text </p>. ', ' some list </li>. ', ' another list </ul>']`
###但我想捕獲開始和結束標籤並將標籤保留在分割文字中。類似的東西###
['<p> Some text some text some text. </p> <p> Another text another text </p>. ', '<li> some list </li>. ', '<ul>another list </ul>']`
###
P粉841870942P粉841870942231 天前482

全部回覆(1)我來回復

  • P粉787806024

    P粉7878060242024-04-01 10:26:40

    回答您的具體問題:

    <(p|li|ul|ol|dl|h1|h2|h3|h4|h5|h6)>[^<]*

    並且匹配而不是拆分。

    \1 指的是開始標記中捕獲的內容。

    類似:

    for match in re.finditer(r"<(p|li|ul|ol|dl|h1|h2|h3|h4|h5|h6)>[^<]*", subject, re.DOTALL):

    但是,在大多數真實情況下,這不足以處理 HTML,您應該考慮 DOM 解析器。

    回覆
    0
  • 取消回覆