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.
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.
DOC Java
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.indexOf(int ch)
Returns the index within this string of the first occurrence of the specified character
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)
la méthode indexOf() renvoie l'index ou est le caractère et -1 s'il n'y est pasEnvoyé par viena
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if("FA SOL) (LALALLALALALALALLALA)".indexOf("(")==-1) { // pas de parenthèse ouvrante }
C'est quoi que tu veux exactement:
C'est pour regarder si le texte est bien ecrit ou rechercher un "mot" particulier:
"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.
bonjour,
La parenthèse est un caractère spéciale pour une expression régulière.
essaie comme ça.^*SOL\\)\\ (*-MUMM-*$
bon courage
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.
Salut,Envoyé par grizzz
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 :
a++
Code : Sélectionner tout - Visualiser dans une fenêtre à part "^.*SOL\\) \\(.*-MUMM-.*$"
merci a tous je n'avais teste qu'un seul \ et je ne pensai pas qu'il fallait mettre le . avant *.
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
Partager