[C#]Regexp

Résolu
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   -  
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   -
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

maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
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
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
je me disais bien qu'il y aurait un | quelque part!!
Merci, du coup, ça m'intriguait!

Maily :-))))
Boumj'chtattrape
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
Si c'est comme les RegExp POSIX :

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

                                   
Jeff  \--Webmaster@CCM--/ 
0
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
Vu l'entrée source, je mettrais plutôt :

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

                                   
Jeff  \--Webmaster@CCM--/ 
0
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 277
 
Si ça peut t'aider, quelques exemples de RegExp en "CiSharp" :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconRegularExpressionExamples.asp

                                   
Jeff  \--Webmaster@CCM--/ 
0
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
^
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