Posez votre question Signaler

[C#]Regexp [Résolu]

teebo 33591Messages postés 14 octobre 2004Date d'inscription ModérateurStatut 24 février 2011Dernière intervention - Dernière réponse le 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
Lire la suite 

[C#]Regexp »

Suggestions
12 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
je me disais bien qu'il y aurait un | quelque part!!
Merci, du coup, ça m'intriguait!

Maily :-))))
Boumj'chtattrape
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Si c'est comme les RegExp POSIX :

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

                                   
Jeff  \--Webmaster@CCM--/ 
teebo - 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
Ajouter un commentaire
Réponse
+0
moins plus
Vu l'entrée source, je mettrais plutôt :

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

                                   
Jeff  \--Webmaster@CCM--/ 
teebo - 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
Ajouter un commentaire
Réponse
+0
moins plus
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--/ 
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
^
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
Ajouter un commentaire
Ce document intitulé « [C#]Regexp » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Windows 8 - À quoi s'attendre ?