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
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éresser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 string[] ligneArray = lignes.Split('\t'); foreach (string ligne in ligneArray) { // faite ce que vous souhaiter ;) }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager