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

Collection et Stream Java Discussion :

[Debutant] Expression réguliere


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Par défaut [Debutant] Expression réguliere
    Bonjour,

    j'ai une chaine de ce type

    "FA SOL) (LALALLALALALALALLALA)"

    comment savoir si il ya une parenthese ouvrante dans cette chaine ?

    ce code ne fonctionne pas
    System.out.println(Pattern.matches("(^*(*$)", chaine));

    merci.

  2. #2
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    DOC Java
    indexOf(int ch)
    Returns the index within this string of the first occurrence of the specified character
    si ca te retourne 0 (ou null, faut verifier, je sais plus), c'est que ca n'est pas contenu, sinon ca te renvoie l'index du caractere.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Par défaut
    je n'ai pas que la parenthese a chercher apres je vais avoir d'autre chose.

    voici mon erreur :

    java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 4
    (^*(*$)
    ^
    at java.util.regex.Pattern.error(Pattern.java:1528)
    at java.util.regex.Pattern.sequence(Pattern.java:1645)
    at java.util.regex.Pattern.expr(Pattern.java:1545)
    at java.util.regex.Pattern.group0(Pattern.java:2297)
    at java.util.regex.Pattern.sequence(Pattern.java:1573)
    at java.util.regex.Pattern.expr(Pattern.java:1545)
    at java.util.regex.Pattern.group0(Pattern.java:2297)
    at java.util.regex.Pattern.sequence(Pattern.java:1573)
    at java.util.regex.Pattern.expr(Pattern.java:1545)
    at java.util.regex.Pattern.compile(Pattern.java:1279)
    at java.util.regex.Pattern.<init>(Pattern.java:1035)
    at java.util.regex.Pattern.compile(Pattern.java:779)
    at java.util.regex.Pattern.matches(Pattern.java:865)
    at com.sfr.ogrv2.commun.TestMigration.testChercheSousChaine(TestMigration.java:1459)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:421)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:305)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:186)

  4. #4
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Citation Envoyé par viena
    DOC Java
    indexOf(int ch)
    Returns the index within this string of the first occurrence of the specified character
    si ca te retourne 0 (ou null, faut verifier, je sais plus), c'est que ca n'est pas contenu, sinon ca te renvoie l'index du caractere.
    la méthode indexOf() renvoie l'index ou est le caractère et -1 s'il n'y est pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if("FA SOL) (LALALLALALALALALLALA)".indexOf("(")==-1) {
       // pas de parenthèse ouvrante
    }

  5. #5
    Membre expérimenté
    Inscrit en
    Avril 2004
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 238
    Par défaut
    C'est quoi que tu veux exactement :

    C'est pour regarder si le texte est bien ecrit ou rechercher un "mot" particulier :

  6. #6
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Par défaut
    "FA SOL) (LALALLALALALALALLALA-MUMM-LAALAL) sfsdfs fdssdfsdfsdfsdf"

    je veux deja savoir si cette expression reguliere fait partie de ma chaine.

    ^*SOL) (*-MUMM-*$

    je pensai plutot a un motif du genre.

    mais j'ai toujours l'erreur poste au dessus.

  7. #7
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    bonjour,

    La parenthèse est un caractère spéciale pour une expression régulière.

    ^*SOL\\)\\ (*-MUMM-*$
    essaie comme ça.

    bon courage

  8. #8
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Si tu veux récupérer les différentes parties :

    "^(DO|RE|MI|FA|SOL|LA|SI)+\\)\\((.*)\\)$"
    Dans cette expression il y 2 groupes : un qui identifie les accord et l'autre les paroles.

  9. #9
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par grizzz
    ^*SOL) (*-MUMM-*$

    je pensai plutot a un motif du genre.
    Salut,

    L'erreur vient du fait que ton expression régulière est incorrect.
    Le caractère "*" signifie que le caractère précédent peut être présent 0 ou plusieurs fois.
    Mais tu met un "*" en début de ligne c'est incorrect.

    De plus les parenthèses doivent être protégé car c'est interprété par les regexp...

    Tu devrait avoir quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "^.*SOL\\) \\(.*-MUMM-.*$"
    a++

  10. #10
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 52
    Par défaut
    merci a tous je n'avais teste qu'un seul \ et je ne pensai pas qu'il fallait mettre le . avant *.

  11. #11
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 14
    Par défaut
    Merci aussi:
    J'ai eu une erreur similaire
    avec la fonction
    replaceFirst("* ",""));

    --> Dangling meta character '*' near index 0
    ********************
    Il faut écrire: (attention deux \)
    replaceFirst("\\* ",""));

    ***
    Même remarque pour replaceAll("+","&"))
    il faut écrire "\\+"
    (ps: si on ecrit "\+", on obtient une erreur de compilation séquence d'échappement non valide, allez savoir pourquoi! alorq qu l'on a Dangling meta character '+')
    (ps2: une recherce de "\+" fait planter google)

    --- Voir "[Debutant(e)]probleme avec un replaceAll" dans le forum

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

Discussions similaires

  1. [debutant]expressions régulières
    Par debdev dans le forum Langage
    Réponses: 9
    Dernier message: 14/06/2005, 15h42
  2. Réponses: 2
    Dernier message: 21/02/2005, 10h42
  3. expression réguliere en c++
    Par alambics dans le forum MFC
    Réponses: 9
    Dernier message: 10/03/2004, 20h19
  4. expression réguliere
    Par alambics dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/03/2004, 13h52
  5. [langage] [debutant] expression reguliere
    Par toto_titi dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2003, 09h45

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