Regexp

Fermé
JavaPasBien - Modifié par Chris 94 le 3/10/2013 à 15:16
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 3 oct. 2013 à 19:00
Bonjour
je chercher a extraire Hello World de la String suivante:

"blablabla\nxd\nHello World!\nlol\nblablabla"

donc j'utilise

le code suivant:

   Pattern MY_PATTERN = Pattern.compile("(xd)(.*)(lol)");
Matcher m = MY_PATTERN.matcher("blablabla\nxd\nHello World!\nlol\nblablabla");
while (m.find()) {
String s = m.group(2);
System.out.println(s);
et la je n'ai rien en retour

je fais de meme avec cette string a peine differente:


   Pattern MY_PATTERN = Pattern.compile("(<)(.*)(>)");
Matcher m = MY_PATTERN.matcher("blablabla\nxd\n<Hello World!>\nlol\nblablabla");
while (m.find()) {
String s = m.group(2);
System.out.println(s);

et la miracle j'ai bien Hello World!

je souhaiterai comprendre pourquoi ca ne marche que dans le 2eme cas avec les <>
j'avais essayé avec "(.*xd)(.*)(.*lol)" initialement mais ca ne marche pas


j'ai cette version de java
java version "1.7.0_25"
OpenJDK Runtime Environment (fedora-2.3.12.1.fc17-i386)
OpenJDK Server VM (build 23.7-b01, mixed mode)

2 réponses

Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
3 oct. 2013 à 16:31
Tes deux exemples ne retournent pas la même valeur.

Cas 1:
group(2) = \nHello World!\n

Cas 2:
group(2) = Hello World!

Ça fait un moment que j'ai fait du Java mais j'oserais penser que ton problème réside dans les "\n".

Bonne chance!
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
3 oct. 2013 à 19:00
Il faudrait savoir ce que tu veux faire avec cette expression régulière, au delà de cet exemple. Parce qu'il y a plusieurs manières d'extraire cette chaîne de caractères, mais certaines ne seront pas bonnes pour ce que tu veux faire plus tard.

Le plus simple :

String str = "blablabla\nxd\nHello World!\nlol\nblablabla";
String[] tab = str.split("\n");
System.out.println(tab[2]); // "HelloWorld!"
0