/ / Extraire une partie d'une chaîne d'une URL - Java Regex - java, regex, chaîne de caractères, url, extrait

Extraire une partie d'une chaîne depuis une URL - Java Regex - java, regex, string, url, extract

J'essaie d'extraire une chaîne entre "/" et "."d'une URL. Par exemple, j'ai une URL du type" some.com/part1/part2/part3/stringINeed.xyz ". J'ai besoin d'extraire" stringINeed "de l'URL ci-dessus, celle entre le dernier" / "et le "." rien d'autre.

Jusqu'à présent, j'ai essayé ce qui suit et cela donne une sortie vide:

import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

class Extract
{
public static void main (String[] args) throws java.lang.Exception
{
String str = "part1/part2/part3/stringINeed.xyz" ;
Pattern pattern = Pattern.compile("/(.*?).");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
}
}

Quel est le problème avec mon code. Quelqu'un peut-il aider?

Réponses:

1 pour la réponse № 1

Utilisez cette regex:

[^/.]+(?=.[^.]+$)

Voir démo.

En Java:

Pattern regex = Pattern.compile("[^/.]+(?=\.[^.]+$)");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group();
}

Explication

  • [^/.]+ correspond à tous les caractères qui ne sont pas une barre oblique ou un point
  • Le lookahead (?=.[^.]+) affirme que ce qui suit est un point suivi de non-points et de la fin de la chaîne

0 pour la réponse № 2

Sans regex

str.substring(str.lastIndexOf("/"), str.lastIndexOf(".")).replaceAll("/", "");