[C#]Regexp

Résolu
Salut tout le monde :o)
Alors voilà, je suis en C# et j'essaye de faire une regexp pour remplacer dans une chaîne les * (wild cards, c'est à dire 0 ou plus charactères) en expression régulière mais je n'arrive pas à faire cela, je remplace par .* et il me remplace par n'importe quelle suite de au moins un ce que je ne veux pas...

result=Regex.Replace (result,@"([^\\])(\*)","$1.*");
			result=Regex.Replace (result,@"([^\\])(\*)","$1.*");
			result=Regex.Replace (result,@"^\*",".*");


ça transforme mes * en .* quand elles ne sont pas précédés par un \, mais cela nécessite encore au moins un charactère (c'est à dire que te*st ne trouvera pas test)

Si quelqu'un a une idée, j'ai aussi essayé (.)* et [.]* mais aucun résultat probant...

Qui va en mer pour son plaisir,
irait en enfer pour ses vacances

10 réponses

  1. Contributeur
    hello!!

    Tu pourrais donner un exemple de chaine non transformée, puis transformée s'il te plait, comme ça, on verra mieux ce que tu veux dire! ;-)

    Maily :-))))
    Boumj'chtattrape
    0
    1. Contributeur
      Bonche je vais revenir sur terre, je m'aperçoit que pour quelqu'un qui ne tourne pas en rond dans ce bout de code depuis des heures c'est pas clair :o)

      Alors en fait je voudrais savoir comment dire dans une expression régulière : "n'importe quel charactère autant de fois que nécessaire, mais également rien du tout si possible" c'est à dire que cela se comporte comme une * de wild cards :o)

      Merci :O)

      Qui va en mer pour son plaisir,
      irait en enfer pour ses vacances
      0
      1. Contributeur
        J'ai trouvé! En fait il faut que je remplace mon wild card * par (.?|.+) rien de moins et rien de plus, ça marche impecc maintenant :o)

        Qui va en mer pour son plaisir,
        irait en enfer pour ses vacances
        0
        1. Contributeur
          je me disais bien qu'il y aurait un | quelque part!!
          Merci, du coup, ça m'intriguait!

          Maily :-))))
          Boumj'chtattrape
          0
          1. Contributeur
            Arf, le prochain problème, puisque tu as l'air de t'y intéresser :o)

            Alors j'ai

            "***TEST*** : It this a [TEST]? *\* +++Yes+++"

            comme string source

            je recherche dedans
            \*\*\*(.?|.+)\*

            et au lieu de me donner comme résultat cette partie là:

            ***TEST*
            comme je m'y attend, il me donne

            ***TEST*** : It this a [TEST]? *\*


            En fait avec ce genre de test il cherche toujours le résultat le plus long 8-S

            Tu (ou un autre) a une idée?

            Qui va en mer pour son plaisir,
            irait en enfer pour ses vacances
            0
            1. Webmaster
              Si c'est comme les RegExp POSIX :

              \*\*\*(.?|.+)?\*

                                                 
              Jeff  \--Webmaster@CCM--/ 
              0
              1. Contributeur
                Nan, en fait ça change rien, il me trouve toujours la plus longue chaîne possible au lieu de chercher la plus courte possible :oS

                Qui va en mer pour son plaisir,
                irait en enfer pour ses vacances
                0
            2. Webmaster
              Vu l'entrée source, je mettrais plutôt :

              \*\*\*([A-Z]*)\*

                                                 
              Jeff  \--Webmaster@CCM--/ 
              0
              1. Contributeur
                Merci mais mon entrée source est une de mes entrées de test, je veux rester global :o)
                Je vais essayer avec un ? à la fin :o)

                Qui va en mer pour son plaisir,
                irait en enfer pour ses vacances
                0
            3. Contributeur
              Merci, mais rien de probant...bon je laisse tomber, je verrais ça dans deux semaines maintenant...Merci!

              Qui va en mer pour son plaisir,
              irait en enfer pour ses vacances
              0
              1. Contributeur
                ^
                Je suis reviendu mais le problème est pas parti :-S
                En plus quand je fais \*(.?|.+)?\* il me trouve 2 charactères au lieu d'en trouver 2 :-S

                Qui va en mer pour son plaisir,
                irait en enfer pour ses vacances
                0