使用正则表达式解析日志

时间:2010-06-14 14:14:21

标签: python regex

我需要在代码中找到一些日志记录宏的所有调用。宏调用的格式为:

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 个答案:

答案 0 :(得分:2)

尝试这个,用java编写,但你可以将它转换为python

replaceAll("(DEBUG[1-5]\s*\\(\")\"[^:]+:\\s+([^;]+)", "$1$2");