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

Java Discussion :

Expression régulière


Sujet :

Java

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Par défaut Expression régulière
    Bonjour à tous,

    Je suis à la recherche d'une expression regulière me permettant de traiter la chaîne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ###WHITE_ON_BLACK######BOLD###Azerty   ###BLACK_ON_WHITE### ###BOLD######BLUE_ON_WHITE###Azerty###BLACK_ON_WHITE### [09/04/13 08:15:37] ###WHITE_ON_BLACK###==###BLACK_ON_WHITE###     ###BOLD######BLUE_ON_WHITE###Horloge###BLACK_ON_WHITE### [###WHITE_ON_BLUE######BOLD###Tue 09/04/13 08:15:37###BLACK_ON_WHITE###] ###WHITE_ON_BLACK###==###BLACK_ON_WHITE###      ###BOLD######BLUE_ON_WHITE###Horloge2###BLACK_ON_WHITE### [09/04/13 08:15:42]           ###WHITE_ON_BLACK###   ###BLACK_ON_WHITE###
    Et je désire récupèrer la chaine sous cette forme là en ne perdant pas les espaces à la fin des chaînes quand elle en possède une:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    ###WHITE_ON_BLACK######BOLD###Azerty   (X espaces)
    ###BLACK_ON_WHITE### (X espace)
    ###BOLD######BLUE_ON_WHITE###Azerty
    ###BLACK_ON_WHITE### [09/04/13 08:15:37] (X espace)
    ###WHITE_ON_BLACK###==
    ###BLACK_ON_WHITE###     (X espaces)
    ###BOLD######BLUE_ON_WHITE###Horloge
    ###BLACK_ON_WHITE### [
    ###WHITE_ON_BLUE######BOLD###Tue 09/04/13 08:15:37
    ###BLACK_ON_WHITE###] (X espace)
    ###WHITE_ON_BLACK###==
    ###BLACK_ON_WHITE###      (X espaces)
    ###BOLD######BLUE_ON_WHITE###Horloge2
    ###BLACK_ON_WHITE### [09/04/13 08:15:42]           (X espaces)
    ###WHITE_ON_BLACK###   (X espaces)
    ###BLACK_ON_WHITE###
    Le terme (X espace) ne sert qu'à indiquer là où il y a techniquement un ou plusieurs espaces, et donc ne fait pas parti de la chaine de caractère, vous l'avez bien compris.

    Bien evidemment pour référencer la recherche, je possède en entrée un tableau avec tous les tag du style ###BLACK_ON_WHITE###, ###BOLD###, ###BLUE_ON_WHITE### ...

    Voilà, si quelqu'un à une idée, je vous remercie d'avance car je galère mais je galère....

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    Utilise la fonction split() de la classe String pour découper ta chaine autour des espaces et reconstruis la de la manière donc tu le souhaites.
    Peux être faudra tu que tu enlèves les espaces en trop d’abord.

    A mon avis ça sera bien plus simple que d'utiliser une expression régulière.

  3. #3
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut
    Citation Envoyé par Nico02 Voir le message
    Salut,

    Utilise la fonction split() de la classe String pour découper ta chaine autour des espaces et reconstruis la de la manière donc tu le souhaites.
    Peux être faudra tu que tu enlèves les espaces en trop d’abord.

    A mon avis ça sera bien plus simple que d'utiliser une expression régulière.
    Tu veux faire split sur quel caractère ? Si c'est sur un espace, y'en a qui vont sauter et il n'aura pas ses espaces en fin de ligne..

  4. #4
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Oui j'ai mal lu je pensais qu'il ne voulait en garder qu'un seul si il y en avait plusieurs ( dans ce cas il aurait simplement fallu remplacer espaceXXX par 1 espace est faire le split() dessus ).

    Pour ce qui est de l'expression régulière je vois toujours pas de solution évidente.

  5. #5
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    A en juger par ton exemple, il semble que la raison pour changer de ligne est la présence d'une nouvelle couleur dans la chaine (comme ###BLACK_ON_WHITE###). Mais visiblement la couleur ne commence pas forcément une ligne (3e ligne de l'exemple).

    Bref, franchement, ca me semble trop compliqué pour utiliser une regex. Non seulement tu vas t'arracher les cheveux pour la pondre (et elle va etre costaude) mais en plus, lorsqu'on va te demander une modif (genre "il faut que la couleur commence une ligne" ou "dans le cas de ###BLACK_ON_WHITE###, on veut supprimer les espaces"), tu vas re-galerer pour changer. Sans parler de la maintenance si quelqu'un d'autre doit toucher à ton code...
    A mon avis, le mieux, c'est de faire ca à la main. Les regex, c'est bien pour des cas pas trop compliqués ou tres figés. Mais la, ca me semble pas etre le plus adapté...

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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