使用正则表达式删除周围文本

时间:2015-07-23 22:59:03

标签: regex eclipse replace find expression

我有一些包含许多函数的代码,每个函数都包含自己的日志条目。每个日志条目都包含一个if语句。我想删除if语句,只留下日志条目,我认为我可以使用带有查找和替换的正则表达式。

例如:

if (log.isEnabled()) {
    log.write("Log message with variable: %s ", var);
}

应替换为:

log.write("Log message with variable: %s", var);

我已尝试按照if \(log.isEnabled\(\)\) \{ (.*) }的方式捕捉并对表达进行分组,但还没有让它发挥作用。

是否有一个表达式可以捕获中间的日志条目,以便我可以找到/替换而不是手动执行?

谢谢!

3 个答案:

答案 0 :(得分:0)

如果您没有任何内部花括号({和}),那么您可以使用类似

的内容
\{\s*(.*)\s*}

...根据https://regex101.com匹配

log.write("Log message with variable: %s ", var);

答案 1 :(得分:0)

你可以试试这个,

\bif\s*\(.*?\)\s*\{\s*([\s\S]*?);\s*}

将匹配的字符串替换为$1\1

DEMO`

答案 2 :(得分:0)

如果您想允许一些格式差异,例如前导空格,请使用此选项。



var str = "if (log.isEnabled()) {\n log.write(\"Log message with variable: %s \", var);\n}";
alert(str.replace(/^\s*if\s*\(log\.isEnabled\(\)\)\s*\{\s*\n\s*((?:.|\n)*?)\s*\n\s*\}/, "$1"));