【问题标题】:Remove function in text editor, leave parameter [duplicate]删除文本编辑器中的功能,保留参数[重复]
【发布时间】:2019-10-03 03:08:51
【问题描述】:

我正在从一个项目更新旧代码,它有数千个旧的 php mysql_real_escape_string() 调用。

问题是我无法进行搜索替换,因为我需要将参数保留在 () 中,然后从调用中删除关闭的 )。这可以在像 sublime 或 vscode 这样的编辑器中完成吗?

【问题讨论】:

    标签: regex visual-studio-code sublimetext3


    【解决方案1】:

    针对您的具体问题(我使用的是 Sublime Text 3)

    示例字符串:

    mysql_real_escape_string(parameter) 
    

    查找模式(注意我们需要对函数的括号进行转义):

    mysql_real_escape_string\((.*?)\)
    

    替换:

    new_fun(\1)
    

    这将导致:

    new_fun(parameter) 
    

    我们匹配旧函数,捕获第1组中的参数。然后替换为新函数,并使用\1将参数(第1组中捕获)放入里面

    现场示例:https://regex101.com/r/OqOGGX/1

    【讨论】:

      【解决方案2】:

      您可以在 Sublime Text 3 中使用捕获组进行搜索和替换。因此,您可以捕获参数并使用反向引用在替换文本中引用它。

      在正则表达式中捕获组使用特殊的括号字符来“捕获”匹配项,并使它们在“反向引用”$1$2 等中可用,它们就像包含匹配组的变量。

      1. 假设我们有一个字符串:

      SOMETHING_UNWANTEDMY_FIRST_CAPTURED_WORDSOMETHING_UNWANTEDMY_SECOND_CAPTURED_WORDSOMETHING_UNWANTED

      1. 使用正则表达式查找

      SOMETHING_UNWANTED(MY_FIRST_CAPTURED_WORD)SOMETHING_UNWANTED(MY_SECOND_CAPTURED_WORD)SOMETHING_UNWANTED

      1. 替换使用捕获组:

      $1$2

      1. 结果

      MY_FIRST_CAPTURED_WORDMY_SECOND_CAPTURED_WORD

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多