Regexp
JavaPasBien
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour
je chercher a extraire Hello World de la String suivante:
"blablabla\nxd\nHello World!\nlol\nblablabla"
donc j'utilise
le code suivant:
je fais de meme avec cette string a peine differente:
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)
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
-
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!
-
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!"