9
votes

Supprimer le point décimal quand pas entre deux chiffres

Je nettoie une chaîne de recherche et je dois supprimer toutes périodes qui apparaissent mais gardent des points décimaux lorsqu'ils se situent entre deux chiffres.

Par exemple, si j'ai une chaîne

599.75, Tigers.

Alors j'aimerais qu'il revenait comme

599.75, Tigers

Je pensais une ligne comme:

strnwstring = regex.replace (strorigstring, strègex, string.empty);

Où Strregex correspondrait à la. et pas les choses qui l'entourent aussi.


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser quelque chose comme \. (?! \ d)


0 commentaires

10
votes

Vous devez profiter de Assertions Lookahead et Lookbehind . Ils ne correspondent pas aux personnages de votre contribution, mais ne déterminent que si une correspondance est possible ou non.
Vous pouvez utiliser des regards négatifs et des regards négatifs pour faire le contraire de cela, ce qui est approprié ici. En utilisant ce qui suit pour strègex correspondra aux périodes qui ne sont pas entourées de chiffres: xxx


1 commentaires

Cela a fonctionné et la page de tutoriel que vous avez liée est très utile. Merci!



5
votes

La façon dont je lis la question, vous voulez correspondre à un point seulement s'il n'est pas à la fois précédé et suivi de chiffres. Par exemple, dans la liste suivante, vous voudriez correspondre au point de chaque chaîne, à l'exception de la dernière, car c'est le seul à obtenir des chiffres des deux côtés.

(a dot, not preceded by a digit) OR (a dot, not followed by a digit)


0 commentaires