Regex-замена
(?<=^|\.)0+
с пустой строкой. Регулярное выражение:
(?<= # 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
† обратите внимание, что не все разновидности регулярных выражений поддерживают просмотр с переменной длиной, но .NET поддерживает.
Если вы ожидаете такой тип ввода: "00.03.03"
и хотите сохранить ведущий ноль в этом случае (например, "0.3.3"
), используйте вместо этого выражение:
(?<=^|\.)0+(?=\d)
и снова замените на пустую строку.
Из комментариев (спасибо Коби): есть более сжатое выражение, которое не требует просмотра назад и эквивалентно моему второму предложению:
\b0+(?=\d)
что составляет
\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
Это работает, потому что 0
является символом слова, поэтому границы слова можно использовать для поиска первого 0
в строке. Это более совместимое выражение, потому что многие разновидности регулярных выражений не поддерживают просмотр с переменной длиной, а некоторые (например, JavaScript) вообще не поддерживают.