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

Python Discussion :

regex ou startswith


Sujet :

Python

  1. #1
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut regex ou startswith
    Bonjour,
    Je cherche à récupérer dans un fichier les chaînes comprises entre "\exercicenew{" et le "}" qui suit.
    Je pensais utiliser pour l'instant stratswidth et endswith car je ne suis pas top à l'aise avec les regex.
    Je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with open("/.../essai_exos-ref.tex",'r') as fich:
        for ligne in fich:
            print(ligne,end="----")
            print(ligne.startswith(r'\\exe'))
    J'obtiens uniquement des False :
    Code LaTeX : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    \exercicenew{S\'eparation angulaire}
    ----False
     
    ----False
     
    ----False
    \exercicenew{Doublet du sodium}
    ----False
     
    ----False
     
    ----False
    \exercicenew{\'Ecart de longueur d'onde}
    ----False
    Je suis sous Ubuntu mais je ne pense pas que ce soit le problème. Si qqn a une idée, cela doit être tout bête, je n'ai peut-être pas compris ces méthodes...
    Pas d'aide par mp.

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    peux-tu nous montrer le début de ton fichier ?
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Voici mon fichier en entier :
    Code LaTeX : 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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    \documentclass [fleqn,a4paper,openany]{book}
    \usepackage [T1]{fontenc}
    \usepackage{amssymb}
    \usepackage[usenames,dvipsnames]{pstricks}
    \usepackage[bookmarks=true,bookmarksnumbered=true,breaklinks=true,
    hypertexnames=false,colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref}
     
    \makeatletter
    \def\contentsline#1#2#3#4{%
    	\ifx\\#4\\%
    	\csname l@#1\endcsname{#2}{#3}%
    	\else
    	\csname l@#1\endcsname{\hyper@linkstart{link}{#4}{#2}\hyper@linkend}{%
    		\hyper@linkstart{link}{#4}{#3}\hyper@linkend
    	}%
    	\fi
    }
    \makeatother
     
    \begin{document}
     
     
    \newcounter{NumeroExerciceNew}
    \renewcommand{\theNumeroExerciceNew}{\thechapter .\,\arabic{NumeroExerciceNew}}
     
    \newcounter{NumeroSolutionNew}
    \renewcommand{\theNumeroSolutionNew}{\thechapter .\,\arabic{NumeroSolutionNew}}
     
    \newif\ifeleve
    %\newcounter{NumeroExerciceNew}
     
    \newcommand\exercicenew[1]{%
    	\par\medskip%
    	\stepcounter{NumeroExerciceNew}%
    	\setlength{\parindent}{0cm}%
    	\setlength{\hangindent}{0cm}%
    	\psshadowbox[linewidth=1.5pt,fillcolor=yellow!30,shadowsize=5pt,shadow=true,shadowcolor=red!20,linecolor=red,framearc=0.5]{$ \blacktriangleright $ \textbf{Exercice \thechapter .\,\arabic{NumeroExerciceNew}~: #1\ifeleve\else\label{#1-solu} \hyperref[#1-enon]{$\Rightarrow$ Corrigé}\fi}}%
    	\addcontentsline{exonew}{exercicenew}{\protect\numberline{\theNumeroExerciceNew}#1}%
    	\par
    }
    \newcommand*\seteleve[1]{%
    	\elevefalse\ifcsname eleve#1\endcsname\csname eleve#1\endcsname\fi
    }
     
     
     
    \newcommand{\solutionnew}[1]% 
    {% 
    	%\hypertarget{#1-enon}{
    	\par% 
    	\stepcounter{NumeroSolutionNew}% 
    	\medskip% 
    	\setlength{\parindent}{0cm}% 
    	\setlength{\hangindent}{0cm}% 
    	\par%
    	\psshadowbox[linewidth=1.5pt,fillcolor=blue!10,shadowsize=5pt,shadow=true,shadowcolor=blue!10,
    	linecolor=blue,framearc=0.5]{$ \blacktriangleright $ \textbf{Solution de l'exercice \thechapter .\,\arabic{NumeroSolutionNew}~: #1 %\begin{Prof} 
    			\label{#1-enon} \hyperref[#1-solu]{$\Rightarrow$ \'Enoncé}
    			%\end{Prof}
    		}
    	}
    	\addcontentsline{solnew}{solutionnew}{\protect\numberline{\theNumeroSolutionNew}#1}
    	\par%}
    }
     
     
    \section{Exercices~: Réseaux}
    \subsection{\'Enoncés}
     
    \exercicenew{Spectrom\`etre \`a r\'eseau}
     
     
    \exercicenew{S\'eparation angulaire}
     
     
    \exercicenew{Doublet du sodium}
     
     
    \exercicenew{\'Ecart de longueur d'onde}
     
     
     
    \exercicenew{Monochromateur \`a r\'eseau}
     
     
    \subsection{Corrigés}
     
    \solutionnew{Spectrom\`etre \`a r\'eseau}
     
     
    \solutionnew{S\'eparation angulaire}
     
    \solutionnew{Doublet du sodium}
     
    \solutionnew{\'Ecart de longueur d'onde}
     
     
    \solutionnew{Monochromateur \`a r\'eseau}
     
     
    \end{document}
    Pas d'aide par mp.

  4. #4
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    En fait, pour être précis sur la finalité de mon programme, il va falloir que je parcours tous les fichiers d'un répertoire, que j'extraie les chaînes comprises entre \exercicenew{ et } ainsi que \solutionnew{ et } puis que je remplace les caractères accentués par des trucs bizarres :
    é par \'e, è par \`e, à par \`a, ...
    Pas d'aide par mp.

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    Citation Envoyé par marco056 Voir le message
    puis que je remplace les caractères accentués par des trucs bizarres :
    é par \'e, è par \`e, à par \`a, ...
    D'après le fichier source c'est pas plutôt l'inverse ? Dans ce cas pourquoi ne pas faire un remplacement global dans tout le fichier par des replace ?
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Non, ce n'est pas l'inverse. Dans mon exemple, c'est déjà fait à la main.
    Je suis obligé de le faire dans mes titres d'exercices pour des problèmes de référence mais si je le fais pour tout le contenu de mes fichiers, cela devient franchement illisible.
    Pas d'aide par mp.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    r'\\exe' dit que la chaine doit commencer par 2 backslash.

    Soit, vous n'utilisez pas de raw string et vous doublez le backslash pour l’échapper, soit vous utilisez des raw string et vous n'en mettez qu'un.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    r'\\exe' dit que la chaine doit commencer par 2 backslash.

    Soit, vous n'utilisez pas de raw string et vous doublez le backslash pour l’échapper, soit vous utilisez des raw string et vous n'en mettez qu'un.

    - W
    Ah oui, merci, je n'avais pas compris cette notion.
    Pas d'aide par mp.

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    donc si je comprends bien tu veux par exemple transformer :
    Code LaTeX : Sélectionner tout - Visualiser dans une fenêtre à part
    \exercicenew{Spectromètre à réseau}
    en
    Code LaTeX : Sélectionner tout - Visualiser dans une fenêtre à part
    \exercicenew{Spectrom\`etre \`a r\'eseau}
    mais remplacer les accents que dans exercicenew et solutionnew
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Oui, du coup, j'ai fait un truc comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dico = {"é":"\'e","è":"\`e","à":"\`a","ù":"\`u"}
    motifs = [r"\exercicenew{",r"\solutionnew{"]
    with open("/media/marco5/Disque-4To/TSI_Phys/TSI_20-21/essai_exos-ref.tex",'r') as fich:
        for ligne in fich:
            for el in motifs :
                if ligne.startswith(el):# and ligne.endswith("}"):
                    for key in dico:
                        print(ligne)
                        print(ligne.replace(key,dico[key]))
    Cela semble fonctionner mais sans doute pas optimisé...
    Reste ensuite à écrire dans le fichier, il faut que je regarde cela de plus près avec le mode "r+" il me semble.
    Pas d'aide par mp.

  11. #11
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    tu pourrais ouvrir un nouveau fichier dans un autre répertoire et l'écrire ligne par ligne au fur et à mesure que tu lis le fichier d'entrée et modifies les lignes
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  12. #12
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Oui, ou le modifier en direct, non ?
    Sachant qu'en cas de mauvaise manip, j'ai des sauvegardes ailleurs.
    Pas d'aide par mp.

  13. #13
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    Citation Envoyé par marco056 Voir le message
    Oui, ou le modifier en direct, non ?
    Peut-être avec in-place
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  14. #14
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Pourquoi pas mais je ne suis pas certain d'être en pythpn 3.6 ou plus.
    Merci en tous les cas.
    Pas d'aide par mp.

  15. #15
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2018
    Messages : 29
    Points : 64
    Points
    64
    Par défaut
    Un regex pour les gouverner tous!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> pattern = re.compile('(?<=\\\(exercice|solution)new{)(.*)(?=})')
    1. (?<=...) : positive lookbehind assertion : est précédée par ...
    2. \\\ : autant qu'il faut pour que ça marche!
    3. (A|B) : A ou B
    4. (...) : groupe de capture
    5. .* : tout, absolument tout, sauf la retour à la ligne
    6. (?=...) : assertion lookahead : est suivie par ...


    la doc est très compréhensible; après un regex, une fois construit, on n'y comprend plus rien, il faut le contruire bout à bout et ça passe!

    Et c'est à peu près tout!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> line = r"\solutionnew{Monochromateur \`a r\'eseau}"
    >>> pattern.search(line)
    <re.Match object; span=(13, 40), match="Monochromateur \\`a r\\'eseau">
    >>> pattern.sub('REMPLACEE', line)
    '\\solutionnew{REMPLACEE}'

  16. #16
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    avec une version python 3.9 ( >= 3.6 pour utiliser module in-place) et en utilisant le motif regex de Daguhh voici un code qui a l'air de fonctionner chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import re
    import in_place
    from functools import reduce
    dico = {"é":r"\'e","è":r"\`e","à":r"\`a","ù":r"\`u"}
    motif = re.compile('(?<=\\\(exercice|solution)new{)(.*)(?=})')
    with in_place.InPlace('d:/temp/marco.tex', encoding='utf-8') as fich:
        for ligne in fich:
            if motif.search(ligne):
                ligne=reduce(lambda a, kv: a.replace(*kv), dico.items(), ligne)
            fich.write(ligne)
    et si l'on veut sauvegarder son fichier avant modification, il suffit d'utiliser le paramètre backup_ext dans la fonction InPlace comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    with in_place.InPlace('d:/temp/marco.tex', encoding='utf-8',  backup_ext='.bak') as fich:
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  17. #17
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    une solution de plus, à base de re.sub() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dico = {r"\'e": 'é', r'\`e': 'è', r'\`u': 'ù', r'\`a': 'à', r"\'E": 'É'}
    #dico = {'é': r"\'e", 'è': r'\`e', 'ù': r'\`u', 'à': r'\`a', 'É': r"\'E"}
     
    def fonk(data):
        a,b,c = data.groups()
        for i in dico.items():
            b = b.replace(*i)
        return a+b+c
     
    with open(infile, 'r') as f1, open(outfile, 'w') as f2:
        f2.write(re.sub(r'(\\(?:exercice|solution)new\{)(.+?)(\})', fonk, f1.read()))
    #             groups: \_____________ a ____________/\_b_/\_c/

  18. #18
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Merci à tous.
    Pas d'aide par mp.

  19. #19
    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
    Avec le module pypi/regex (pour avoir l'ancre \G):
    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
    import regex
     
    dico = {"é":r"\'e","è":r"\`e","à":r"\`a","ù":r"\`u"}
     
    s = r''' \exercicenew{Spectromètre à réseau} Spectromètre à réseau \solutionnew{Spectromètre à réseau} '''
     
    pat = r'''(?x)
      (?:
          \G (?!\A)
        |
          (?> [^\\]* \\ )+? (?:exercice|solution) new {
      )
      [^éèàù}]* \K [éèàù] '''
     
    print(regex.sub(pat, lambda m: dico[m.group(0)], s))
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

Discussions similaires

  1. [Regex] Plusieurs motifs
    Par sissi_l dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 29/06/2004, 14h15
  2. [jakarta][regex]Matcher mot en entier.
    Par thibaut dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/05/2004, 13h33
  3. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22
  4. [regex][string] replaceAll bogué ?
    Par 7eme dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 13/11/2003, 16h36
  5. Cherche regex...
    Par laurent_h dans le forum C
    Réponses: 4
    Dernier message: 31/03/2003, 11h24

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