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) вообще не выглядят.
Вы пытаетесь отформатировать дату? Есть более эффективные способы сделать это, чем регулярное выражение. – Oded
Нет, это не дата, это уровень иерархии – Melursus