1 votes

Regex : Sélectionner toutes les lignes qui ne contiennent pas certains mots devant d'autres mots (tags).

Je veux trouver une formule regex pour sélectionner toutes les lignes qui n'ont pas de <p class="test_formal"> devant <span class="test_formal2">

<p class="test_formal"><span class="test_formal2">

J'ai créé une regex, mais elle n'est pas très bonne.

(?s)\A(?!.*?(?<!\w)(<span class="test_formal2">)(?!\w)<p class="test_formal">).*

Quelqu'un peut-il m'aider un peu ?

2voto

Toto Points 14447

Cela correspondra à toutes les lignes qui ont :

<span class="test_formal2"> suivie ou non de <p class="test_formal">

Mais pas <p class="test_formal"> suivi de <span class="test_formal2">

  • Ctrl + F
  • Trouver quoi : ^(?:(?!<p class="test_formal">).)*<span class="test_formal2">.*$
  • Vérifier l'enveloppement
  • Vérifier l'expression régulière
  • DÉFAUT DE CONTRÔLE . matches newline
  • Search in document

Explication :

^                               # beginning of line
  (?:                           # start non capture group
    (?!                         # negative lookahead, make sure we haven't
      <p class="test_formal">   # literally
    )                           # end lookahead
    .                           # 1 any character
  )*                            # end group, may appear 0 or more times
  <span class="test_formal2">   # literally
  .*                            # 0 or more any character
$                               # end of line

Compte tenu de ce qui précède :

<p class="test_formal">
<span class="test_formal2">
<p class="test_formal"><span class="test_formal2">
blah blah <p class="test_formal"><span class="test_formal2"> blah blah
<span class="test_formal2"><p class="test_formal">
blah blah <span class="test_formal2"><p class="test_formal"> blah blah

Il correspond :

Search "^(?:(?!<p class="test_formal">).)*<span class="test_formal2">.*$" (3 hits in 1 file)
  new 2 (3 hits)
    Line 2: <span class="test_formal2">
    Line 5: <span class="test_formal2"><p class="test_formal">
    Line 6: blah blah <span class="test_formal2"><p class="test_formal"> blah blah

Démonstration de Regex101

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