Cela devrait être assez simple, mais je suis incapable de trouver la réponse ni de venir avec elle. J'ai une chaîne qui a toujours un ou plusieurs chiffres à la fin, et potentiellement d'autres chiffres ailleurs. Je veux supprimer tout de la chaîne sauf pour tous les chiffres à la fin.Regex pour remplacer tout sauf les chiffres à la fin
Quelques exemples de cas de test:
"1 test50" -> "50"
"anothertest10" -> "10"
"can contain spaces123" -> "123"
"ok1" -> "1"
J'ai essayé la chose la plus évidente: str.replaceAll(".*(\\d)+$","$1")
, mais malheureusement le .*
est adapté en premier lieu, donc pour les cas de test ci-dessus, il se traduira par 0,0,3,1
au lieu de 50,10,123,1
. J'ai le sentiment que j'ai besoin d'utiliser un look-behind ou quelque chose, même si je les ai à peine utilisés dans le passé et je ne sais pas comment l'appliquer à mon problème.
'(.? *) (\ D +) $' [Lien] (https: // regex101 .com/r/2pkcev/1) – Gurman
Fondamentalement, vous pouvez faire correspondre les chiffres à la fin de la chaîne avec le modèle [0-9] + $ '. Pourquoi voulez-vous utiliser 'replaceAll'? Edit: vous pouvez également utiliser 'str.replaceFirst (" (? S) (?:. * \\ D)? (\\ d +) $ "," $ 1 ")' pour arriver plus rapidement à la fin de la chaîne sauts de ligne dans la chaîne. Mais est-ce que ça n'a pas l'air lourd? –
@Gurman Merci! 'Str.replaceAll (". *? (\\ d +) $ "," $ 1 ")' travaillé. –