J'ai un problème en appliquant une regex dans mon code Java.
Ma chaîne de texte est comme ça (String myString)Regex - extraire des informations d'une chaîne en Java
name: Abc Def;
blah: 1 2 3;
second name: Ghi;
J'ai besoin d'extraire les informations de nom (Abc Def). Le nom peut contenir une chaîne de 1+ mots. Toutes les propriétés (nom, bla, deuxième nom) sont espacés avec des espaces blancs au début
Le code que je suis en train d'utiliser est
String patternStr = "\\s{2,}name:\\s([\\w ]*\\w+);";
Matcher matcher = Pattern.compile(patternStr).matcher(myString);
if (matcher.matches())
System.out.println(matcher.group(1));
Mon regex semble fonctionner très bien avec online tools (regex: \ s {2,} name: \ s ([\ w] * \ w +);) mais quand je le porte en Java, cela ne marche tout simplement pas. Une idée de ce qui me manque?
Merci beaucoup
Edit: Si je matcher.find() il fonctionne très bien.
Merci pour l'expression rationnelle amélioration mais je pense que le problème est quand j'appelle matcher.matches(). Si j'utilise matcher.find() cela fonctionne très bien. – mickthompson