J'essaie de remplacer le dernier point dans une chaîne en utilisant une expression régulière.
Disons que j'ai la chaîne suivante: p> je veux remplacer Le dernier point avec une marque d'exclamation telle que le résultat est le suivant: p> J'ai essayé diverses expressions à l'aide de la méthode string.replaceall (chaîne, chaîne) code > Sans chance. P> p>
4 Réponses :
Une façon d'une manière: Vous pouvez également utiliser un lookahead négatif comme: p> regex en action strong> p> p>
Merci beaucoup! Je n'aurais jamais monté avec ce monstre.
Le fait que c'est un monstre (vos mots, pas le mien) est probablement un bon argument pour pas i> l'utiliser :-) Encore, si cela fonctionne, il devrait être accepté puisque vous avez demandé une solution de regex .
Je suis gourmand comme le motif et j'approuve :) Belle utilisation de gourmand. *
Pourquoi ne pas faire le deuxième quantificateur réticent, comme dans ^ (. *) \\. (. *?) $ Code>?
Bien que vous puissiez utiliser une regex, il est parfois préférable de reculer et de le faire de la manière à l'ancienne. J'ai toujours eu la conviction que, si vous ne pouvez pas penser à une regex pour le faire dans environ deux minutes, cela ne convient probablement pas à une solution de regex.
Nul doute sur une merveilleuse réponses de regex ici. Certains d'entre eux peuvent même être lisibles: -) p>
Vous pouvez utiliser lastIndexof code> pour obtenir la dernière occurrence et SUBSTRING CODE> Pour créer une nouvelle chaîne: Ce programme complet montre comment: P> < Pré> xxx pré>
La sortie est la suivante: p>
Oui, j'ai eu une solution à l'aide de StringBuilder et en remplaçant sur la base de l'index du dernier point. Mais je voulais que cela soit fait en utilisant une expression régulière si possible d'où la question possible.
Tout comme un fyi, ma solution précédente utilisant StressBuilder ressemblait à ceci: StringBuilder Builder = New StringBuilder (chaîne); builder.replace (lastdotindex, lastdotindex + 1, "!"); String Newstring = Builder.Tostring ();
La regex dont vous avez besoin est \\. (? = [^.] * $) code>. Le ? = code> est une assertion de lookahead
Essayez ceci:
string = string.replaceAll("[.]$", "");