Help sur les expressions reguliere

Signaler
Messages postés
8
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
15 septembre 2008
-
Messages postés
29
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
24 août 2012
-
je veux use une expression reguliere afin de d"extraire des mots bien specifique et les remplacé
exemple
x ne contient pas y et  z ne depasse pas m
moi ce que je veux et d'extraire le mot qu'il y entre "ne ...  pas"
j'ai essaye cette grammaire
(.*?)(ne)(.*?)(pas)*(.*?) 
mais le pbm que j'ai et que si j'ecris
"ne contient pas et ne contient pas" ca marche
mais si j'ai" ne contient pas et ne depasse pas "
il me remplace "contient "mais "depasse" il ne la remplace pas

la curiosité est un vilain defaut mais la cle de toutes connaissance

5 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Je dirais que c'est parce que tu as (.*?) à la fin de ta regex. Dans ton 2ème exemple, il n'y a rien après le 2ème pas, ce qui n'est pas correct.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
essaye ceci :

(.*?)(ne)\b(\w+?)\b(pas)(.*?)

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
8
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
15 septembre 2008

d'accord je l'essayerai et je vous informerai merci pour votre aide

la curiosité est un vilain defaut mais la cle de toutes connaissance
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4
Perso j'aurai fait:

Regex lulz = new Regex(@"^(?<chaine1>[^\r\n]+)ne(?<chaine2>[^\r\n]+)pas(?<chaine3>[^\r\n]+)$");
string toto = "x ne contient pas y et  z ne depasse pas m ";
Match match = lulz.Match(toto);
MessageBox.Show(match.Groups["chaine2"].Value);
Messages postés
29
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
24 août 2012

bonjour a tout le monde, je cherche a développer un code en C# qui me permet d'utiliser les expressions régulières pour trouver des mots (par exemple ayant la forme PM-ASK-2134) dans un document Word, le code est facile pour des fichiers textes (.txt) mes pour un document Word c'est différent, SVP si qelqu'un a une idée je suis coinsé depuis 2 semaines. merci a l'avance.
voila mon code: (il permet de trouver la chaine "PM-ASK-2134" dans un document word mais je cherche a trouver toutes les ocurences de ce type en utilisant une expression régulière):

object missing = System.Reflection.Missing.Value;
object fileName = @textBox1.Text.ToString();
Microsoft.Office.Interop.Word.Application msWord = new Microsoft.Office.Interop.Word.Application();
msWord.Visible = false;
Microsoft.Office.Interop.Word.Document nvDoc;
nvDoc = msWord.Documents.Open(ref fileName, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing);

nvDoc.Application.Selection.Find.ClearFormatting();
Regex Tag = new Regex(@"SC-([\w\-.]+)-([\S\-.]+)");
nvDoc.Application.Selection.Find.Text = "PM-ASK-2134";

while (nvDoc.Application.Selection.Find.Execute(
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing))
{
MessageBox.Show(nvDoc.Application.Selection.Find.Text);
}
// else MessageBox.Show("Text not found.");


// Fermer le document
nvDoc.Close(ref missing, ref missing, ref missing);

// Fermeture de word
msWord.Quit(ref missing, ref missing, ref missing);