Bonjour @ tous,
J'utilise les expression régulière afin de parsé un fichier texte. Commençons par un extrait du fichier :
Mon but est de repérer la première ligne du fichier qui est différente des autres. En effet elle est toujours de cette forme :INVITE sip:aamj@10.193.137.10 SIP/2.0
Route: <sip:10.193.137.10;lr>
Via: SIP/2.0/UDP 10.193.137.17:5060;branch=z9hG4bKfci84h186phc7mra04dvhno;rport
From: <sip:coco@toto.fr>;tag=ud284h4bflhc6vg904dv
To: <sip:aamj@10.193.137.10>
J'ai entre crochet port car il falcutaltif. (l'espace n'est que pour éviter l'émoticone* sip:*@Adresse_IP[: Port] SIP/2.0constitué de : et de P)
Si on observe les autres lignes, elles sont du genre :
Et le Hic c'est que ma première ligne peut se retrouver en deuxième, troixième, ou xième lignes.*: *
Donc je me suis construit une expression régulière :
Bon ok il y a certainement mieux, mais je pensais qu'elle marchait tout le temps, hors elle ne fonctionne pas avec le texte que je vous ai donné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part (?!SIP/2.0)[a-zA-Z]* [0-9a-zA-Z]*:[a-zA-Z]*\\@([0-9]{1,3}\\.){3}[0-9]{1,3}:[0-9]* SIP/2.0
Pour comparé, avec le texte suivant, elle fonctionne :
La grande différence se situe au niveau port facultatif, qui est présent dans ce fichier. Donc je pense qu'il faut que je dise dans mon expression, juste après l'adresse IP "([0-9]{1,3}\\.){3}[0-9]{1,3}" que ":[0-9]*" peut être facultatif.INVITE sip:service@127.0.0.1:5060 SIP/2.0
Via: SIP/2.0/UDP 127.0.0.1:5061
From: sipp <sip:sipp@127.0.0.1:5061>;tag=1
To: sut <sip:service@127.0.0.1:5060>
Call-ID: 1.3292.127.0.0.1@sipp.call.id
Je vais chercher demain parce que là je vais rentrer chez moi, mais si vous avez la solution n'hésitez pas à me la donner, cela fera un heureux.
Ensuite, est ce que les pro en regexp pourrait me dire s'il y a mieux ou si l'expression marchera tout le temps ?
Merci par avance pour votre aide, et pour m'avoir lu.
Ced600.
Partager