【发布时间】:2019-02-03 01:32:15
【问题描述】:
我正在使用 Sublime Text 3 并进行一些代码重构。我有很多看起来像这样的代码片段(数百个):
IF g_debug = 1 THEN
display_log('GET_CHANGE_REASON_CODE: Entry');
END IF ;
我想做的是替换所有内容,但将该部分保留在括号中(我正在将此逻辑重构为它自己的函数),因此它看起来像这样:
debug('GET_CHANGE_REASON_CODE: Entry');
请注意,我还想去掉原始“display_log”调用前面的 2 个空格。
到目前为止,我派生的正则表达式搜索匹配到 display_log 的所有内容,但我无法忽略括号中的部分并继续匹配 END IF 行。
我也不确定如何编写替换正则表达式字符串。这是我目前所拥有的:
IF g_debug = 1 THEN(?s)(.*?)display_log(?s)(.*?)
任何建议将不胜感激!
【问题讨论】:
-
尝试
(?s)IF\s+g_debug\s*=\s*1\s+THEN\s*display_log(\(.*?)^END IF\s*;并替换为debug$1。见this demo。 -
哇,谢谢。我忘了提到有时我可能在 IF 语句中有几行 display_log('some text') 。我如何将这些行中的每一行更改为 debug('some text')?
标签: regex oracle plsql sublimetext3