我需要在代码中找到一些日志记录宏的所有调用。宏调用的格式为:
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]作为子组与此有关?)来自任何比我更了解的人的帮助:)。
答案 0 :(得分:2)
尝试这个,用java编写,但你可以将它转换为python
replaceAll("(DEBUG[1-5]\s*\\(\")\"[^:]+:\\s+([^;]+)", "$1$2");