2011-07-06 16 views
6

Estoy limpiando una cadena de búsqueda y necesito eliminar cualquier punto que aparezca, pero mantengo los puntos decimales cuando están entre dos dígitos.C# Regex - Quite el punto decimal cuando no esté entre dos dígitos

Por ejemplo si tienen una cadena

599,75, tigres.

entonces me gustaría que vuelva como

599.75, tigres

estaba pensando una línea como:

strNewString = RegEx.Replace (strOrigString , strRegEx, string.Empty);

Donde strRegEx coincidiría con el.'s para eliminarlo, pero estoy teniendo dificultades para encontrar la forma de hacer coincidir solo el. y no las cosas que lo rodean también.

Respuesta

7

Usted debe tomar ventaja de the lookahead and lookbehind assertions. En realidad, no coinciden con los caracteres en su entrada, sino que solo determinan si una coincidencia es posible o no.
Puede usar lookaheads negativos y negativos para hacer lo contrario, lo cual es apropiado aquí. Utilizando el siguiente para strRegEx coincidirá con períodos que no están rodeadas de dígitos:

(?<!\d)\.(?!\d) 
+0

Esto funcionó y la página de tutorial que ha vinculado es muy útil. ¡Gracias! – HackWeight

0

Se podría utilizar algo como \.(?!\d)

2

La forma en que leí la pregunta, que desea hacer coincidir un punto sólo si no es a la vez precedida y seguida por los dígitos. Por ejemplo, en la siguiente lista, querrá hacer coincidir el punto en cada cadena, excepto la última, porque es la única que tiene dígitos en ambos lados.

abc. 
.def 
x.y 
123. 
.456 
x.78 
90.x 
599.75

La respuesta aceptada, (?<!\d)\.(?!\d) los partidos sólo en las tres primeras cuerdas; que es equivalente a:

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

Si mi interpretación es correcta, usted quiere algo como esto:

(?<!\d)\.|\.(?!\d) 

... lo que equivale a:

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

En cualquier caso, paga para ser lo más preciso posible cuando se habla de la coincidencia de texto, especialmente cuando se trata del uso de correcciones.

Cuestiones relacionadas