Regex-sostituire
(?<=^|\.)0+
con la stringa vuota. L'espressione regolare è:
(?<= # 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 che non tutti i sapori regex supportano lunghezza variabile look-dietro, ma .NET fa.
Se ci si aspetta questo tipo di input: "00.03.03"
e si desidera mantenere lo zero in questo caso (come "0.3.3"
), usare questa espressione, invece:
(?<=^|\.)0+(?=\d)
e di nuovo sostituirlo con la stringa vuota.
Dai commenti (grazie Kobi): C'è un'espressione più concisa che non richiede look-dietro ed è equivalente al mio secondo suggerimento:
\b0+(?=\d)
che è
\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
Funziona perché il 0
sembra essere un carattere di parola, quindi i limiti di parola possono essere utilizzati per trovare il primo 0
in una riga. È un'espressione più compatibile, perché molti tipi di espressioni regex non supportano il look-behind a lunghezza variabile e alcuni (come JavaScript) non sembrano affatto indietro.
Stai cercando di formattare una data? Ci sono modi migliori per farlo rispetto alla regex. – Oded
No, non è una data, è un livello di gerarchia – Melursus