Дополните целое число с помощью регулярного выражения - PullRequest
1 голос
/ 23 мая 2009

Я использую регулярные выражения со структурой Python для заполнения определенного номера в номере версии:

10.2.11

Я хочу преобразовать второй элемент с добавлением нуля, чтобы он выглядел так:

10.02.11

Мое регулярное выражение выглядит так:

^(\d{2}\.)(\d{1})([\.].*)

Если я просто срыгиваю обратно соответствующие группы, я использую эту строку:

\1\2\3

Когда я использую мой любимый тестовый комплект регулярных выражений (http://kodos.sourceforge.net/),, я не могу заставить его заполнить вторую группу. Я пробовал \ 1 \ 20 \ 3, но это интерпретирует второе обращение как 20, не 2.

Из-за библиотеки, с которой я это использую, мне нужно, чтобы она была одной строкой. Библиотека принимает строку регулярного выражения, а затем строку для того, что следует использовать для ее замены.

Я предполагаю, что мне просто нужно экранировать строку соответствующих групп, но я не могу понять это. Заранее спасибо за любую помощь.

Ответы [ 4 ]

3 голосов
/ 23 мая 2009

Как насчет совершенно другого подхода?

nums = version_string.split('.')
print ".".join("%02d" % int(n) for n in nums)
1 голос
/ 23 мая 2009

Попробуйте это:

(^\d(?=\.)|(?<=\.)\d(?=\.)|(?<=\.)\d$)

И заменить совпадение на 0\1. Это сделает любое число длиной не менее двух цифр.

1 голос
/ 23 мая 2009

А как насчет удаления . из регулярного выражения?

^(\d{2})\.(\d{1})[\.](.*)

заменить на:

\1.0\2.\3
0 голосов
/ 23 мая 2009

Ваша библиотека поддерживает именованные группы ? Это может решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...