Bonjour, je me permet de poser ma question je ne trouve pas le moyen de récupérer un groupe de caractère détecter après le 2 ème \s ou \t rencontrer tout ça à l'aide d'une Regex
Version imprimable
Bonjour, je me permet de poser ma question je ne trouve pas le moyen de récupérer un groupe de caractère détecter après le 2 ème \s ou \t rencontrer tout ça à l'aide d'une Regex
Salut
Dans l'idée, tu peux imaginer :
- un groupe "n'importe quoi - sauf un espace ou une tabulation - suivi d'un espace ou une tabulation"
- ce groupe doit être présent 2 fois
- tu récupères la suite
En pratique, ça peut donner un truc du genre ^(?:[^\s\t]*[\s\t]){2}(.*)$, où :
- à partir du début de chaîne ^, un groupe "n'importe quoi - sauf un espace ou une tabulation - suivi d'un espace ou une tabulation" = (?:[^\s\t]*[\s\t]) (?: c'est pour éviter de récupérer inutilement le contenu de ce match)
- ce groupe doit être présent 2 fois = {2}
- tu récupères la suite = (.*) jusqu'en fin de chaîne $
1/30/2020 4:04:00 PM:240 PLC_T12 N_ERREUR InterfaceOPCPhysique::WriteItem [L:475] IID_IOPCSyncIO::Write failed : 712024
Si tu veux j'ai cette chaîne de caractères je récupère très bien le début j'aimerai
-récupérer PLC_T12 qui n'est pas standard à chaque ligne donc un groupe de caractère différent
-le N_ERREUR est standard pour ce que je veux faire
-Conserver InterfaceOPCPhysique::WriteItem [L:475] (au cas ou)
-et la fin IID_IOPCSyncIO::Write failed : 712024
C'est déjà plus complexe que ce que tu décris au départ ;) Le but d'une regex étant de traiter des chaînes de façon générique, il faut que tu décrives bien plus précisément les cas que tu peux avoir en entrée (avec un seul exemple, c'est impossible de créer une regex qui gère tous les cas). Cependant, en voyant ta chaîne et ce que tu veux récupérer, tu peux aussi peut-être te contenter de :
- récupérer la deuxième partie via la regex proposée précédemment
- splitter la partie récupérée avec \t (aux autres qui liraient ce message, on ne voit pas les \t dans le message forum mais ils apparaissent bien quand on cite son message :))
Bonsoir,
Pourquoi ne pas utiliser la méthode Split() qui ferait le job en se basant sur les espaces ?
Je ne suis pas sur de comprendre la méthode Split pourrait tu m'éclairer dessus ? Car je comprends pourquoi le regex serais complexe à utiliser dans ce cas,
Merci d'avance !
Finalement j'ai réussi simplement avec la méthode Split() je suis passer par une tabulation et ma ligne est découpé comme je le souhaite ^^
Mon code si des personnes sont intéresserCode:
1
2
3
4
5 string[] ligneArray = lignes.Split('\t'); foreach (string ligne in ligneArray) { // faite ce que vous souhaiter ;) }