2 votes

Regex : Trouvez les balises html particulières qui contiennent ces mots (chaînes).

J'ai cette étiquette :

<span class="text_obisnuit2">* Not&#259;:</span>John Wells - <em>My Dreams</em>, Albatros Books, 1986.</p>

et celui-ci :

<span class="text_obisnuit1">* Not&#259;:</span>Mariah Carey - <em>Lovers on the road</em>, BackStreet Books, 1965.</p>

Donc, je veux trouver ces balises html particulières. <span class="text_obisnuit2"> qui contiennent ces mots (chaînes) : Albatros y <em> y </em> (La première ligne)

4voto

Kintaro Points 912

C'est une question simple, mais elle nécessite que l'"Albatros" vienne après l'"Albatros". <em> tag ( Démonstration ):

(<span class="text_obisnuit2">).*<em>.*<\/em>.*Albatros.*

Le suivant ne se soucie pas de l'ordre dans lequel ils sont ( Démonstration ):

(<span class="text_obisnuit2">).*(<em>.*<\/em>.*Albatros.*|Albatros.*<em>.*<\/em>.*)

Voici une autre variante, où le ou les chiffres après text_obisnuit n'ont pas d'importance et l'ensemble span est capturé comme le premier groupe ( Démonstration ):

(<span class="text_obisnuit\d+">.*<\/span>).*(<em>.*<\/em>.*Albatros.*|Albatros.*<em>.*<\/em>.*)

Toutes les regex supposent que les entrées sont chacune sur leur propre ligne dans le fichier. Il est peut-être plus judicieux de détecter les <p> y </p> comme limites, mais pour cela nous aurions besoin d'un extrait plus important de votre fichier d'entrée.

4voto

Toto Points 14447
  • Ctrl + F
  • Trouvez quoi : <span class="text_obisnuit2">(?=.*?<em>.*?</em>)(?=.*?\bAlbatros\b).*$
  • CHECK Enveloppe
  • CHECK Expression régulière
  • DÉCHARGER . matches newline
  • Find All in Current Document

Explication :

<span class="text_obisnuit2">   # literally
(?=                             # positive lookahead, make sure we have after:
.*?                           # 0 or more any character but newline, not greedy
<em>                          # literally open em tag
.*?                           # 0 or more any character but newline, not greedy
</em>                         # literally close em tag
)                               # end lookahead
(?=                             # positive lookahead, make sure we have after:
.*?                           # 0 or more any character but newline, not greedy
\bAlbatros\b                  # Albatros with word boundaries
)                               # end lookahead
.*                              # 0 or more any character but newline
$                               # end of line

Capture d'écran :

enter image description here

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X