J'essaie de faire correspondre toutes les barres obliques / dans une chaîne mais uniquement si la chaîne commence par "..

Cette Regex ne correspond qu'à la première barre oblique

(?<=['|"]\.\.)(?<=.)*?/

Devrait correspondre…

"../a/b/c/test.aspx"
"../a/test.aspx"

Ne devrait pas

"/a/b/c/test.aspx"
../a/b/c/test.aspx

Des idées?

1
amsackett 22 janv. 2020 à 19:32

1 réponse

Meilleure réponse

Notepad++ utilise le moteur d'expression régulière PCRE, vous pouvez donc utiliser cette expression régulière :

(?:^"\.\.|(?!^)\G)[^/\n]*\K/

Démo RegEx

Détails RegEx:

  • (?: : Démarrer le groupe sans capture
    • ^"\.\. : Match ".. au début
    • | : OU
    • (?!^)\G : \G affirme la position à la fin de la correspondance précédente ou au début de la chaîne pour la première correspondance. (?!^) s'assure que nous ne sommes pas à la position de départ.
  • ): terminer le groupe non capturé
  • [^/]* : faites correspondre 0 ou plus de tout caractère qui n'est pas /
  • \K : réinitialiser toutes les informations correspondantes
  • /: associez un /
1
anubhava 22 janv. 2020 à 16:42