【问题标题】:How to write a regexp replace that keeps part of my string?如何编写保留部分字符串的正则表达式替换?
【发布时间】: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


【解决方案1】:

我会尝试这样的事情 - display_log\((.*?)\)\;,替换为 debug($1);。这将从您的代码中删除 IF...THEN 要求,您可能不需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    相关资源
    最近更新 更多