Salut,
Quand on décrit une expression régulière, on liste des règles, pas un exemple de cas.
Si ton but est de récupérer les n derniers trucs qui ressemblent à un pattern (les 2 derniers qui ressemblent à un nombre à virgule ou point, de ce qu'il semble) :
1 2 3 4 5 6 7 8 9 10 11 12
| public static List<String> lastMatches(final String string, final Pattern pattern, final int n) {
if ( n<=0 ) return Collections.emptyList();
final Matcher matcher = pattern.matcher(string);
final Deque<String> queue = new ArrayDeque<>(n);
while(matcher.find()) {
if (queue.size() == n) {
queue.pop();
}
queue.add(matcher.group());
}
return Collections.unmodifiableList(new ArrayList<>(queue));
} |
1 2 3 4 5 6 7 8 9 10 11
| public static void main(String[] args) {
final Pattern pattern = Pattern.compile("[\\d\\.,]+"); // on cherche ce qui ressemble à un nombre, avec point ou virgule
System.out.println(lastMatches("ABC Nuit Belle - Nuit seule 100% 0.92 3.08 4,00 335",pattern,2)); // on veut les 2 derniers
System.out.println(lastMatches("ABC Nuit Belle - Nuit seule 100% toto 335",pattern,2)); // on veut les 2 derniers
System.out.println(lastMatches("ABC Nuit Belle - Nuit seule 335",pattern,2)); // on veut les 2 derniers
System.out.println(lastMatches("ABC Nuit Belle - Nuit seule 100% 0.92 3.08 4,00 335",pattern,1)); // on veut le dernier
System.out.println(lastMatches("ABC Nuit Belle - Nuit seule",pattern,2)); // on veut les 2 derniers
} |
Résultat :
[4,00, 335]
[100, 335]
[335]
[335]
[]
Partager