Шаблоны в строке, которую нужно изменить, не были понятны из вопроса. Например, 033
исправлено или это может быть 025
или даже 25
? Я сделал некоторые предположения при использовании регулярного выражения
r" ^(\\0(\d+)\[\2)[a-z]\\0\2\[(\d[a-z].+)
, чтобы получить две группы захвата, которые должны быть объединены, разделенные точкой с запятой. Я попытался разъяснить свои предположения ниже, частично чтобы помочь ОП изменить это регулярное выражение для удовлетворения альтернативных требований.
Демо
Регулярное выражение выполняет следующие операции:
^ # match beginning of line
( # begin cap grp 1
\\0 # match '\0'
(\d+) # match 1+ digits in cap grp 2
\[ # match '['
\2 # match contents of cap grp 2
) # end cap grp 1
[a-z] # match a lc letter
\\0 # match '\0'
\2 # match contents of cap grp 2
\[ # match '['
(\d[a-z].+) # match a digit, then lc letter then 1+ chars to the
# end of the line in cap grp 3
Как видите, часть строки, захваченной в группе 1, равна
\033[33
Я предположил, что часть этой строки, которая сейчас 033
, должна состоять из двух или более цифр, начинающихся с нуля, а второе появление строки цифр состоит из тех же цифр после ноль. Это делается путем захвата цифр, следующих за «0» (33
) в группе захвата 2, а затем с использованием обратной ссылки \2
.
Следующая часть строки должна быть заменена и, следовательно, не захвачено:
m\\033[
Я предположил, что m
должно быть одной строчной буквой (или литералом m
?), обратная косая черта sh и ноль, и требуется, и следующие цифры должны снова соответствовать содержимому группы захвата 2.
Остальная часть строки,
1mThis is a warning\033[0m: Virus manager \033[4mfailed\033[0m\033[0m
, записывается в группе захвата 3. Здесь я предположил, что она начинается с одной ди git (возможно, это должно быть \d+
), за которым следует одна буква в нижнем регистре, которая не должна совпадать с буквой в нижнем регистре, сопоставленной ранее (хотя это может быть применено с другой группой захвата). В этот момент я сопоставляю оставшуюся часть строки с .+
, отказавшись от соответствующих шаблонов в этой части строки.
В качестве альтернативы можно иметь только две группы захвата, группу захвата, которая сейчас # 2 становится № 1, а № 2 - частью строки, которая должна быть заменена точкой с запятой.