0 votes

Regex : Comment faire correspondre une logique regex 1 ou plusieurs fois ?

J'ai déjà une logique d'expressions rationnelles qui me dit de rechercher une balise div avec class=something. Cependant, cela peut se produire plusieurs fois (l'une après l'autre). Vous ne pouvez pas simplement ajouter des crochets autour de cette logique regex complexe déjà existante (par exemple [:une logique regex compliquée déjà existante :]* -- alors comment faire en regex ? Je veux éviter d'avoir à utiliser la logique du langage de programmation pour ajouter cette logique de regex après elle-même si je peux...

Gracias

1voto

Antal S-Z Points 17977

Ne pas analyser le HTML avec regexen ! Sérieusement, c'est littéralement impossible dans le cas général.

Pour répondre à votre question sur les expressions rationnelles : si vous avez une expression rationnelle R arbitrairement complexe, vous pouvez faire les choses suivantes avec elle :

  • (R) correspond à R et le stocke dans un groupe de capture.
  • (?:R) si elle est prise en charge par votre moteur de regex, correspond à R sans le stocker dans un groupe de capture.

En d'autres termes, les parenthèses regroupent ; les crochets, en revanche, ne concernent que les classes de caractères. Vous voulez probablement quelque chose comme (avec une meilleure regex pour votre div) (?:<div class="something">\s*)+ : correspond au div suivi d'un nombre quelconque d'espaces, et le trouve une ou plusieurs fois. Mais, s'il vous plaît, reconsidérez l'utilisation des regexen pour cela - bien qu'ils soient un outil pratique pour beaucoup de choses, le HTML n'en fait pas partie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X