Regex reemplazar
(?<=^|\.)0+
con la cadena vacía. La expresión regular es:
(?<= # begin positive look-behind (i.e. "a position preceded by")
^|\. # the start of the string or a literal dot †
) # end positive look-behind
0+ # one or more "0" characters
† nota que no todos los sabores de expresiones regulares compatibles con longitud variable de observación detrás, pero .NET hace.
Si esperas este tipo de entrada: "00.03.03"
y desea mantener el cero en este caso (como "0.3.3"
), utilice esta expresión en su lugar:
(?<=^|\.)0+(?=\d)
y otra vez reemplace con la cadena vacía.
De los comentarios (gracias Kobi): No es una expresión más concisa que no requiere de observación detrás y es equivalente a mi segunda sugerencia:
\b0+(?=\d)
que es
\b # a word boundary (a position between a word char and a non-word char)
0+ # one or more "0" characters
(?=\d) # positive look-ahead: a position that's followed by a digit
Esto funciona porque el 0
pasa a ser un carácter de palabra, por lo que los límites de las palabras se pueden utilizar para encontrar el primer 0
en una fila. Es una expresión más compatible, ya que muchos sabores de expresiones regulares no son compatibles con la apariencia de longitud variable detrás, y algunos (como JavaScript) no buscan en absoluto.
¿Estás tratando de dar formato a una fecha? Hay mejores formas de hacer esto que regex. – Oded
No, no es una fecha, es un nivel de jerarquía – Melursus