2017-01-25 4 views
0

Я хотел бы знать, есть ли способ добавить 0 перед каждым 1-значным номером, используя regex.Замените [0-9] на 0 [0-9]

входной строки представляет собой список из 1-3 чисел, разделенных '-' (т.е. 28, 12-56, 67-6, 45-65-46).

Два вопроса, я пришел через это:

  1. Matching все возможные 1-значные номера, не делая отдельную проверку для каждого из ниже: ^[0-9]-, -[0-9]-, ^[0-9]&, -[0-9]&
  2. Добавление 0 не снимая ничего другого. Так что очередь: Regex.Replace(input, "^[0-9]-","0") во что-то вроде: Regex.Replace(input, "^[0-9]-","^0[0-9]-")
+0

Try 'Regex.Replace (s, @ "\ Ь \ d \ Ъ", "0 $ &")' ' –

ответ

3
  • поиск: (?<!\d)(\d)(?!\d)
  • заменить 0$1

Где:

  • (?<!\d) является отрицательным просмотром назад, что делает, что мы гавань» t цифра перед матчем.
  • (\d) - группа захвата, на которую ссылается $1 в заменяемой части.
  • (?!\d) - отрицательный результат, который гарантирует, что у нас нет цифры после матча.

См. lookaround для получения дополнительной информации.

Это заменяет цифру, не предшествующую или другую цифру, на 0 + цифру.

Regex.Replace(input, @"(?<!\d)(\d)(?!\d)","0$1") 
+0

Так Regex.Replace (ввод, @" (?

+0

@nickzoum: Да, это так. – Toto

+0

Спасибо! Кажется, это работает. Но не могли бы вы объяснить в своем ответе, как это работает. Причина, до сих пор я получаю только то, что \ d ищет номер (правильно?), И что '0 $ 1' добавляет 0 и сопоставленную строку. –