problème d'analyse de regex

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous, Je suis entrain de vouloir analyser un fichier en python, seulement voilà, mon test de regex ne marche pas. J'ai une ligne de ce type : /NodeList/2/DeviceList/0/$ns3::WifiNetDevice/Phy/PhyRxDrop Sender:10 actual_time:1.00045 send_time:1.00044e+09

Voici ce que je fais dans mon script

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# -*-coding:utf-8 -*
import os
import re

liste = list()
motif1 = r"/NodeList/(\d+)/DeviceList/0/$ns3::WifiNetDevice/Phy/PhyRxDrop  Sender:(\d+) actual_time:1.00045 send_time:1.00044e+09"

with open("simulations/traces/phy-rx-drop.tr", "r") as flux:
    ligne = flux.readline()
    #print(ligne)
    if re.match(motif1, ligne):
        print("yes")

os.system("pause")

Malheureusement je n'entre pas dans le if. Quelqu'un aurait une idée du problème? Cordialement.

+0 -0

Essaie d'échapper les caractères réservés comme l'a dit Richou D. Degenne:

1
motif1 = r"/NodeList/(\d+)/DeviceList/0/\$ns3::WifiNetDevice/Phy/PhyRxDrop Sender:(\d+) actual_time:1\.00045 send_time:1\.00044e\+09"

Anciennement AlphaZeta

+0 -0
Auteur du sujet

Merci de vos remarques. J'ai remplacé l'ancienne ligne par ça

1
motif1 = r"/NodeList/(\d+)/DeviceList/0/\$ns3::WifiNetDevice/Phy/PhyRxDrop  Sender:(\d+) actual_time:(\w+) send_time:(\w+)"

Mais ça ne marche pas mieux :(

+0 -0

Cette réponse a aidé l'auteur du sujet

C'est normal, tu as remplacé 1\.00045 par une suite de caractères de la classe \w+ équivalente à [A-Za-z0-9_]+. Or, tu as un point . qui n'appartient pas à la classe \w, donc ça ne match pas. Idem pour 1\.00044e\+09.

Édité par felko

Anciennement AlphaZeta

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte