Разбор логов с помощью регулярных выражений - PullRequest
2 голосов
/ 14 июня 2010

Мне нужно найти все вызовы некоторых макросов регистрации в коде. Вызов макроса имеет вид:

DEBUG[1-5] ( "methodName: the logged message", arguments)

Но в новых версиях макросов автоматически добавляется имя метода, поэтому моя задача - написать скрипт Python, который удалит дублирующиеся имена функций, уже указанные программистом.

Я использую подфункцию из модуля re. Я планирую заменить часть, обозначенную || знаки ниже:

||DEBUG[1-5] ("methodName: || the logged message", arguments) с просто DEBUG[1-5]("

Проблема заключается в следующем:

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

((DEBUG | INFO | all other macros names )[1-5]*)\s*\(\"\w+:

Но оно не соответствует всему выражению (от DEBUG до двоеточия), а только имени макроса, например, DEBUG5.

Мое выражение неверно или есть некоторая изюминка в обработке регулярных выражений Python? (может быть, тот факт, что я использую DEBUG [1-5] в качестве подгруппы, как-то связан с этим?) Помощь от кого-либо более знающего, чем я ценю :)

1 Ответ

2 голосов
/ 14 июня 2010

попробуйте это, написано в Java, но вы можете преобразовать его в Python

replaceAll("(DEBUG[1-5]\s*\\(\")\"[^:]+:\\s+([^;]+)", "$1$2");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...