Je souhaite trouver une seule expression régulière correspondant à la plus longue chaîne numérique d'une URL. i.e. pour l'URL: http://stackoverflow.com/1234/questions/123456789/ask
, je voudrais revenir à: 123456789
Recherche de la plus longue "séquence numérique" dans une chaîne en utilisant une seule expression rationnelle
Je pensais que je pouvais utiliser: ([\d]+)
Cependant ce retourne le premier match de la gauche, pas la plus longue. Des idées :)?
Ce regex sera utilisé comme une entrée à un modèle de stratégie, qui extrait certaines caractéristiques de urls:
public static String parse(String url, String RegEx) {
Pattern pattern = Pattern.compile(regex);
Matcher m = pattern.matcher(url);
if (m.find()) {
return m.group(1);
}
return null;
}
Il serait beaucoup plus net si je pouvais utiliser un regex simple. :(-
Ceci est tout simplement pas possible sans modifications/meilleures spécifications en une seule regex. Vous aurez besoin d'une logique de programmation supplémentaire. Période. – Jan
Obtenez toutes les correspondances basées sur '\ b \ d + \ b' et parcourez les correspondances pour trouver la plus longue longueur – anubhava
De plus, aucune parenthèse n'est nécessaire dans ce cas, vous pouvez très bien écrire' \ d + 'sans aucune parenthèse. – Jan