IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Expression régulière avec capture qui peuvent changer de place


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 36
    Points
    36
    Par défaut Expression régulière avec capture qui peuvent changer de place
    Bonjour,

    Je souhaite analyser des logs et capturer des groupes qui peuvent changer de place dans la ligne (avant, après ...)
    Existe t'il en expression régulière un moyen de capturer des groupes qui peuvent changer de place dans la ligne :

    matricule=(.*)...autrechamps=(.*)
    autrechamps=(.*) ... matricule=(.*)

    Je prends dans cette exemple 2 groupes, mais j'en ai en réalité une dizaine, le OU n'est donc pas possible car trop de possibilité.
    Cela implique que les groupe doivent posséder un nom.

    J'ai beau chercher sans succès.

    Merci de votre aide,
    Dosy07

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Il n'y a pas grand chose de miraculeux que tu puisses faire avec les regex, le mieux étant de lire le log ligne par ligne (avec stream_get_line), de séparer tous les champs de la ligne de log (tu peux éventuellement faire un filtrage basique des lignes auparavant) et de regarder s'il y a les champs qui t'intéressent.

    Sinon avec les regex, il y a la solution plutôt bourrin avec l'intégralité du fichier dans une variable, qui consiste à empiler des tests avant (lookahead):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^(?=.*matricule=(\S*))(?=.*autrechamps=(\S*))/m
    Les lookaheads n'ont pas de largeur, ils ne consomment pas de caractères donc chacun d'eux est testé depuis le début de la ligne.

    Mais plus tu as de champs à extraire moins c'est efficace, car chaque test doit parcourir toute la ligne dans le pire des cas.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. Expression Régulière avec Quote
    Par jon301 dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2006, 22h08
  2. [RegEx] Expression régulière avec preg_match_all
    Par tit_oune dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2006, 23h28
  3. Expressions régulières avec variable
    Par killprog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/04/2006, 17h03
  4. Expression réguliére avec CHECK
    Par BRAUKRIS dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 08/09/2005, 17h38
  5. Expression régulière avec "|"
    Par YanK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/07/2005, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo