IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

REGEX sous Notepad++ : Nettoyer URL


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut REGEX sous Notepad++ : Nettoyer URL
    Salut,

    Sous Notepad++, je cherche via un REGEX à faire en sorte que des chaines de caractère contenu dans un fichier et ce présentant de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://community.domain.tld/register?to=3662%2354564894861351532416dzda#%frfgrzfz,categorie,dateAcces,,,
    deviennent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://community.domain.tld,categorie,dateAcces,,,
    J'ai trouvé une partie de l'équation (^[a-z0-9]+://([a-z0-9.-]+)) pour identifier le début de la phrase, mais je n'arrive pas à identifier la seconde partie via un REGEX.

    Auriez-vous une idée ?

  2. #2
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonjour

    Fait à l'arrache : https://regex101.com/r/wvXWQ2/1/

    Je comprends de ta demande que tu veux supprimer le querystring dans l'URL.

    Le pattern serait/pourrait être (\?[^,]*), qu'il faut alors remplacer par une chaîne vide.

    A tester et confirmer ;-)

  3. #3
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Merci pour ton aide,

    Mais je ne veux pas supprimer que la querystring.
    Je souhaite également supprimer ce qui la précède de manière a obtenir uniquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "https://community.domain.tld"
    https://regex101.com/r/0n4s8s/1

  4. #4
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Hello

    https://regex101.com/r/nUBuI7/1

    La regex serait: https?\://[^/].*/([^,]*)L'idée est donc de matcher le protocole (http ou https) puis le NDD. Ce qui suit et jusqu'à la présence d'une virgule serait à supprimer.

    Du coup, si le pattern donne un résultat, il suffirait de remplacer par une valeur vide.

    Bonne journée

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 988
    Par défaut
    Moi je dirais: ^([a-z]+://[^/,#?]*)[^,\n]* avec $1 en remplacement ou bien ^[a-z]+://[^/,#?]*\K[^,\n]* avec la chaîne vide en remplacement (mais je ne me rappelle plus si notepad++ tolère le \K ou pas et ce bien que le moteur de regex soit issu de libboost).

    Ces patterns d'url restent cela-dit naïves car une url peut très bien contenir une partie login/pass entre quotes où la plupart des caractères (dont # et ?) sont tolérés, et d'autre part tous les protocoles ne sont pas forcément suivis de ://.

  6. #6
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Hello

    Notre approche est différente; avec la regex que je proposais (et qui doit être plus vu comme un brouillon car non testée sur des dizaines d'URLs) visait à cibler la partie à supprimer; pas le NDD.

    Je me suis dit qu'il suffirait de cibler le $1 et de remplacer cette valeur par une chaîne vide pour la supprimer et, du coup, répondre je pense au besoin.

    Juste une autre approche ;-)

    Bonne soirée

  7. #7
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 988
    Par défaut
    visait à cibler la partie à supprimer; pas le NDD.
    Oui t'inquiète, c'est bien ce que je me suis dit, mais concrètement avec la commande remplacer de notepad++ tout ce que tu peux faire c'est capturer ce que tu veux garder pour le réinjecter dans la pattern de remplacement ou trouver un moyen de l'exclure du match. Autrement dit, tu peux pas lui dire retire moi ça en le mettant dans un groupe de capture (ce qui serait pourtant bien pratique au passage).

    PS: après vérification, \K ("Kept back" selon la doc libboost: assez difficile à traduire, mais disons "[position] retenu[e]" en ce qui concerne le début du résultat renvoyé) est bien accepté par Notepad++ (7.9.3).

  8. #8
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Salut,

    Désolé pour les délais entre deux retours.

    On s'approche petit à petit du résultat j'ai testé https://regex101.com/r/SdMOQY/1

    si je dis à Notepad de remplacer par /1 cela me garde bien que la partie contenant le domaine. Mais ça garde également l'arborescence, et ça j'en veux pas.

    Merci pour votre aide en tout cas.

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    reg=/^(https:\/\/[^/]+)/;
     
    domaine=urls[i].match(reg)[1];
    ??

    ou bien
    https://regex101.com/r/OB6CV7/1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre éclairé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 702
    Par défaut
    Génial !

    En combinant le travail de chacun, on obtient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(https?://[^\/,]+)(\/+[^,]+)
    https://regex101.com/r/bhn5Ix/1


    Il fallait réfléchir à l'envers. (note à moi même pour une relecture future)
    • On voulait les chaines de caractères commençant par HTTP ou HTTPS - > ^(https?://
    • Mais pas le premier de ces caractères / et , -> [^\/,]+)

    Pour la seconde partie :
    • On voulait la chaine où l'on trouve au moins un / -> (\/+ ,mais pas la première , -> [^,]+)


      Merci pour votre aide. Je peux résoudre ce Post.
      A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regex SED / comportement différent sous Notepad++
    Par sebyo dans le forum Shell et commandes GNU
    Réponses: 22
    Dernier message: 05/12/2014, 12h21
  2. Réponses: 22
    Dernier message: 11/07/2014, 17h08
  3. Regex sous javascript
    Par Death83 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 01h50
  4. impression sous notepad
    Par Scyrius dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 09/11/2005, 09h14
  5. regex sous win !
    Par seal3 dans le forum Windows
    Réponses: 1
    Dernier message: 09/11/2005, 00h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo