Maison  >  Questions et réponses  >  le corps du texte

Conserver des balises HTML spécifiques lors du fractionnement d'une chaîne

Je dois diviser une chaîne par un nombre spécifique de balises (<li>, <lu> ...). J'ai compris l'expression régulière

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

En gros, il fait le travail

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>']`

Mais je souhaite capturer les balises d'ouverture et de fermeture et conserver les balises dans le texte divisé. Quelque chose de similaire

['<p> Some text some text some text. </p> <p> Another text another text </p>. ', '<li> some list </li>. ', '<ul>another list </ul>']`

P粉841870942P粉841870942183 Il y a quelques jours310

répondre à tous(1)je répondrai

  • P粉787806024

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

    Pour répondre à vos questions spécifiques :

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

    Et faites correspondre au lieu de diviser.

    1 fait référence à ce qui est capturé dans la balise d'ouverture.

    Semblable à :

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

    Cependant, dans la plupart des cas réels, cela ne suffit pas pour gérer le HTML et vous devriez envisager un analyseur DOM.

    répondre
    0
  • Annulerrépondre