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

Pascal Discussion :

Utilisation d'une regex simple


Sujet :

Pascal

  1. #1
    Membre habitué

    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Février 2013
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 148
    Points : 199
    Points
    199
    Par défaut Utilisation d'une regex simple
    Bonsoir,

    J'aimerais pouvoir détecter plusieurs chaines qui sont du style :

    [chaine1]
    [chaine2]
    chaine3
    chaine 4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     RegEx := TRegExpr.Create;
      try
        Regex.Expression := '[A-Za-z0-9_ ]';
        if Regex.Exec(Name) then
        begin   
             // Mon code de traitement ...
    Cela fonctionne, mais je ne pense pas que la syntaxe soit géniale. La valeur des chaîne peut être n'importe quel carractère, l'important c'est de détecter et traiter celles qui commencent par '[' et qui ce terminent par ']'

    Merci pour tout aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonsoir !

    Pour commencer, voici une proposition qui permet de capturer ce qu'il y a entre les crochets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Expression := '[A-Za-z0-9_ ]+';
    Et une autre qui capture les crochets avec la chaîne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Expression := '\[[A-Za-z0-9_ ]+\]';
    Cela répond-il au besoin ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Une proposition peut-être plus satisfaisante :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    program Crochets;
     
    uses
      RegExpr;
     
    var
      r: TRegExpr;
      f: textFile;
     
    procedure Check;
    var
      i: integer;
    begin
      WriteLn(f, StringOfChar('-', 80));
      with r do
      begin
        WriteLn(f, 'InputString       = ', InputString);
        for i := 0 to SubExprMatchCount do
          WriteLn(f, 'Match[', i, ']          = ', Match[i]);
      end;
    end;
     
    const
      SAMPLE: array[0..1] of string = (
        'abc123',
        '[abc123]'
      );
     
    var
      i: integer;
     
    begin
      Assign(f, 'log.txt');
      Rewrite(f);
     
      r := TRegExpr.Create;
      r.Expression := '(\[?)([A-Za-z0-9_ ]+)(\]?)';
     
      for i := Low(SAMPLE) to High(SAMPLE) do
      begin
        r.Exec(SAMPLE[i]);
        Check;
      end;
     
      Close(f);
    end.
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    --------------------------------------------------------------------------------
    InputString       = abc123
    Match[0]          = abc123
    Match[1]          = 
    Match[2]          = abc123
    Match[3]          = 
    --------------------------------------------------------------------------------
    InputString       = [abc123]
    Match[0]          = [abc123]
    Match[1]          = [
    Match[2]          = abc123
    Match[3]          = ]
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

Discussions similaires

  1. [RegEx] une regex simple de recherche ?!?
    Par LeHibou2 dans le forum Langage
    Réponses: 1
    Dernier message: 05/12/2012, 09h24
  2. une regex simple : trouver un mot en 6 majuscules
    Par EnRadeSurEclipse dans le forum Requêtes
    Réponses: 6
    Dernier message: 21/05/2010, 15h55
  3. Quel Layout utiliser pour une fenetre simple?
    Par Dazdh dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 15/04/2009, 18h11
  4. Cas d'utilisation dans une bibliothèque (simple)
    Par z980x dans le forum Cas d'utilisation
    Réponses: 9
    Dernier message: 29/09/2008, 19h55

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