2010-06-14 2 views
2

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

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

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

Я использую функцию sub из модуля 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] как подгруппу, имеет какое-то отношение к этому?) Помощь от любого более знающего меня, чем я оценил :).

ответ

2

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

replaceAll("(DEBUG[1-5]\s*\\(\")\"[^:]+:\\s+([^;]+)", "$1$2"); 
Смежные вопросы