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

Langage PHP Discussion :

Comment écrire un motif à supprimer [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut Comment écrire un motif à supprimer
    Bonjour à tous.
    Il y a belle lurette que je n'ai plus écrit une ligne de code PHP (ou autre d'ailleurs) aussi vais-je essayer de me montrer le plus clair possible.
    Pour les besoins de la construction d'un moteur de recherche sur mon site de chansons je voudrais trouver un motif de regexp qui excluerait tout ce qui est entre crochets, crochets compris.
    Un exemple valant souvent mieux qu'un long discours, disons que j'ai cela
    "[Bm]Elle est vapeur dans le nu[A]age,\n",
    "dans le ruisseau ce babi[G]llage.\n",
    "Elle est la pluie sur ma [F#]peau.\n\n",
    "[Bm]Elle est la vague sur la [A]plage,\n",
    "la cascade dans les al[G]pages.\n",
    "Elle est embruns sur mon ba[F#]teau.\n\n",
    "[D]Elle est source de toute [Em]chose.\n",
    "C‘est sur elle que la vie re[D]pose\n",
    "qu‘elle soit glace dans les né[Em]vés\n",
    "ou grêlons dans les gibou[F#]lées.\n\n",
    "[D]Quand elle irrigue les plants de [Em]riz\n",
    "ou bien qu‘elle éteint l‘incen[D]die,\n",
    "elle accomplit tant de prou[Em]esses\n",
    "qu‘on d‘vrait bien en faire notre dé[F#]esse.\n\n",
    "[Bm]Elle est neige dans le bli[A]zzard,\n",
    "voile cotonneux dans le broui[G]llard\n",
    "et même la sueur sur ma [F#]peau.\n\n",
    "[Bm]Elle sait se glisser n‘importe [A]où,\n",
    "en filet ou en gros re[G]mous,\n",
    "rien ne résiste à ses a[F#]ssauts.\n\n",
    "[D]Elle a englouti la ville [Em]d‘Ys"
    et que je souhaiterais obtenir ceci
    "Elle est vapeur dans le nuage,\n",
    "dans le ruisseau ce babillage.\n",
    "Elle est la pluie sur ma peau.\n\n",
    "Elle est la vague sur la plage,\n",
    "la cascade dans les alpages.\n",
    "Elle est embruns sur mon bateau.\n\n",
    "Elle est source de toute chose.\n",
    "C‘est sur elle que la vie repose\n",
    "qu‘elle soit glace dans les névés\n",
    "ou grêlons dans les giboulées.\n\n",
    "Quand elle irrigue les plants de riz\n",
    "ou bien qu‘elle éteint l‘incendie,\n",
    "elle accomplit tant de prouesses\n",
    "qu‘on d‘vrait bien en faire notre déesse.\n\n",
    "Elle est neige dans le blizzard,\n",
    "voile cotonneux dans le brouillard\n",
    "et même la sueur sur ma peau.\n\n",
    "Elle sait se glisser n‘importe où,\n",
    "en filet ou en gros remous,\n",
    "rien ne résiste à ses assauts.\n\n",
    "Elle a englouti la ville d‘Ys"
    Que me conseilleriez-vous SVP,
    Merci.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    Par défaut
    Salut

    Je ne suis pas spécialiste de RegExec, mais pour apprendre j’essaie toujours de relever le défit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    replace(/(\[[A-Za-z]+\]+)|(\[[A-Z#\]]+)/g,"")
    donne le résulta attendu, mais il y a peut être/surement plus propre..

    Un lien utile: Enfin maîtriser les Expressions Rationnelles
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    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 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $txt = preg_replace('~\[ [^]]* ]~x', '', $txt);
    [^]] est une classe de caractères qui contient tout sauf le crochet fermant. Le modificateur x fait que les espaces de la pattern sont ignorés.

    À noter que $txt peut aussi bien être une chaîne de caractères qu'un tableau de chaînes de caractères.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Merci à vous deux.

    CosmoKnacki, ton motif '~\[ [^]]* ]~x' ne match pas (en fait, il ne m'élimine rien).

    Par contre, je m'en suis inspiré (comme de tes explications) pour construire celui-ci : ~\[[^\]]*\]*~, qui semble remplir le contrat.

    Pour être exhaustif, j'ajouterais que mon exemple n'était pas forcément bien choisi car certains accords, dans d'autres chansons, comportent des # des 7 ou de 9 des +

    Je crois que je vais pouvoir déclaré ce post RÉSOLU.

    Encore merci.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    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 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    CosmoKnacki, ton motif '~\[ [^]]* ]~x' ne match pas (en fait, il ne m'élimine rien).
    Bah t'as pas du le tester bien fort le motif! demo
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

Discussions similaires

  1. Comment écrire et supprimer dans un fichier JSON avec fasterXML jackson
    Par Invité dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 24/08/2016, 11h04
  2. Comment écrire un fichier texte au format MS-DOS ?
    Par fredfred dans le forum Langage
    Réponses: 9
    Dernier message: 20/01/2005, 09h00
  3. [VB.NET] comment écrire du texte avec opengl?
    Par ero_senin dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/01/2005, 13h34
  4. [JAR] Comment écrire dans un fichier properties dans un jar
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/10/2004, 15h16
  5. Comment écrire explicitement en sortie d'un job OEM ?
    Par zestrellita dans le forum Entreprise Manager
    Réponses: 11
    Dernier message: 11/03/2004, 09h36

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