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 Java Discussion :

Problème de Pattern pour Matcher une expression précise


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 116
    Points : 44
    Points
    44
    Par défaut Problème de Pattern pour Matcher une expression précise
    Bonjour à tous,

    Je tourne en rond alors je vous fais part de mon soucis.
    Je cherche à matcher une expression de ce type dans un fichier CSS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @font-face{font-family:'toto';src:url('fonts/toto.eot'),url('fonts/titi.ttf') format('truetype'),url('fonts/tutu.svg') format('svg');font-weight:normal;font-style:normal;}
    Pour ce faire j'utilise un pattern comme suit (je l'ai fait au boulot donc je le remet de tête mais la syntaxe précise n'est pas très importante) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern.compile("(@font-face\\{font-family:[A-Za-z']+src:(url\\(([^\\)]+)\\)\\s*format\\(([^\\)]+)\\)|url\\(([^\\)]+)\\))+([\\.]*))")
    Lorsque que je fais , il me matche bien l'expression, par contre lorsque je fais , il me retourne que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @font-face{font-family:'toto';src:url('fonts/toto.eot')
    alors que moi je voudrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @font-face{font-family:'toto';src:url('fonts/toto.eot'),url('fonts/titi.ttf') format('truetype'),url('fonts/tutu.svg') format('svg');font-weight:normal;font-style:normal;}
    Quelqu'un peut m'aider ?

    Merci par avance.

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Je crois qu'il te manquai principalement le ";" à un moment.
    Conseil : fait des sous "match" pour construire une regex aussi tordu.
    Ça rend le truc légèrement plus digestif.

    Code qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class RegexTest {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		String a = "@font-face{font-family:'toto';src:url('fonts/toto.eot'),url('fonts/titi.ttf') format('truetype'),url('fonts/tutu.svg')    format('svg');font-weight:normal;font-style:normal;}";
    		//(@font-face\\{font-family:[A-Za-z']+src:(url\\(([^\\)]+)\\)\\s*format\\(([^\\)]+)\\)|url\\(([^\\)]+)\\))+([\\.]*))
    		String matchParenthese= "\\([^\\)]+\\)\\s*";
    		Pattern pattern = Pattern.compile("(@font-face\\{font-family:[A-Za-z']+\\s*;\\s*src:url"+matchParenthese+"(\\s*format"+matchParenthese+"|,url"+matchParenthese+")*)");
    		Matcher matcher = pattern.matcher(a);
    		while (matcher.find()) {
    		      System.out.println(matcher.group());
    	    }
    	}
    }
    Cordialement,
    Patrick Kolodziejczyk.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 116
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup, c'est niquel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Problème pour concevoir une expression régulière
    Par lokicorp dans le forum Langage
    Réponses: 5
    Dernier message: 08/07/2011, 13h12
  2. [VB-excel]aide pour concaténer une expression
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2006, 19h06
  3. [VBA Excel] Userform pour supprimer une ligne précise
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 14h32
  4. Quel design pattern pour réaliser une synthèse
    Par jbwan dans le forum Design Patterns
    Réponses: 3
    Dernier message: 21/04/2006, 12h39
  5. [Java][Xpath] Problème pour rédiger une expression
    Par althea_vestrit dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 23/01/2006, 20h53

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