[C#]Regexp

Résolu/Fermé
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 - 15 nov. 2004 à 17:00
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 - 30 nov. 2004 à 11:19
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 lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
15 nov. 2004 à 17:17
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 jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
15 nov. 2004 à 17:30
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 jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
15 nov. 2004 à 17:41
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 lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
15 nov. 2004 à 17:44
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 jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
16 nov. 2004 à 14:26
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 18301 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
16 nov. 2004 à 14:28
Si c'est comme les RegExp POSIX :

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

                                   
Jeff  \--Webmaster@CCM--/ 
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
16 nov. 2004 à 15:00
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 18301 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
16 nov. 2004 à 14:30
Vu l'entrée source, je mettrais plutôt :

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

                                   
Jeff  \--Webmaster@CCM--/ 
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
16 nov. 2004 à 14:31
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 18301 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
16 nov. 2004 à 15:45
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 jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
16 nov. 2004 à 16:01
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 jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
30 nov. 2004 à 11:19
^
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