Я новичок в Python, но этот вопрос не является домашней работой (на самом деле этот код помогает генерировать RSS на моем сервере Subversion).Следует ли упростить двухэтапное регулярное выражение?
У меня есть массив строк в переменной info_lines
. И я хочу заменить каждое появление идентификатора ошибки. Мой текущий код выглядит следующим образом:
for ln in range(3, len(info_lines)): # skip two strings since there are author&date info
if re.search(r'(?:BUG|FIX):(?:[ ,]*(\d+))+', info_lines[ln]):
info_lines[ln] = re.sub(r'(\d+)+', r'<a href="http://bugzilla.mycompany.com/show_bug.cgi?id=\1">\1</a>', info_lines[ln])
formatted_lines = "<br/>".join(info_lines[3:])
Он должен заменить следующий текст:
STABLE
FIX: some bug fixed
FIX: 10, 24, 3355
FIX: error 1024 was fixed
с этим один:
STABLE
FIX: some bug fixed
FIX: <a href="http://bugzilla.mycompany.com/show_bug.cgi?id=10">10</a>, <a href="http://bugzilla.mycompany.com/show_bug.cgi?id=24">24</a>, <a href="http://bugzilla.mycompany.com/show_bug.cgi?id=3355">3355</a>
FIX: error 1024 was fixed
Обратите внимание, что 1024 не должен быть заменен ссылка.
Мой текущий код выполняет эту работу, но мне было интересно, можно ли было упростить, оптимизировать и т. Д. Может быть, его можно заменить только одним заменяющим регулярным выражением? Или его можно заменить одной магической функцией Python из известных библиотек?
Является ли модификация сайта info_lines на месте, необходимой позже в программе? –
№ 'info_lines' не будет использоваться позднее. –