Regex pour extraire du texte multiligne entre deux balises en JavaScript
Vous rencontrez des difficultés lors de l'extraction de texte à partir d'une chaîne HTML à l'aide d'un modèle regex . Plus précisément, l'indicateur multiligne (/m) ne semble pas fonctionner lorsqu'il y a des nouvelles lignes dans le HTML.
Pour résoudre ce problème, vous devez utiliser le modificateur "/.../s", communément appelé modificateur « dotall ». Cependant, il est important de noter que ce modificateur n'existe pas dans Vanilla JavaScript.
Solutions de contournement sans le modificateur Dotall :
Si vous ne pouvez pas utiliser l'indicateur /s dans votre environnement JavaScript actuel, envisagez une solution de contournement en utilisant une classe de caractères qui inclut à la fois des caractères d'espacement et des caractères autres que des espaces :
[\s\S]
Dans votre cas, le regex ressemblerait à ceci :
/<div>
JavaScript moderne : prise en charge du modificateur Dotall
Dans les environnements JavaScript modernes prenant en charge ES2018, vous peut utiliser directement le drapeau "/s" (dotAll). Cet indicateur fait en sorte que le caractère point (.) dans l'expression régulière corresponde également aux caractères de nouvelle ligne.
Par conséquent, votre expression régulière originale pourrait être réécrite à l'aide de l'indicateur /s :
/<div>
En utilisant le modificateur dotall (/s) ou sa solution de contournement ([\s\S]), vous pouvez vous assurer que votre modèle d'expression régulière correspond avec succès au texte multiligne entre les balises HTML spécifiées, même lorsque il y a des nouvelles lignes dans ce texte.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3