在文本编辑器中删除函数,保留参数

Remove function in text editor, leave parameter

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

问题是我无法执行搜索替换,因为我需要将参数保留在 () 中,然后从调用中删除结尾的 )。这可以在像 sublime 或 vscode?

这样的编辑器中完成吗?

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

正则表达式中的捕获组使用特殊的括号字符来 "capture" 匹配并使它们在 "back-references" </code>, <code> 等中可用,就像包含的变量匹配组。

  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. 使用捕获组替换

</code></p> <ol start="4"> <li><strong>结果</strong>:</li> </ol> <p><code>MY_FIRST_CAPTURED_WORDMY_SECOND_CAPTURED_WORD

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

示例字符串:

mysql_real_escape_string(parameter) 

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

mysql_real_escape_string\((.*?)\)

替换:

new_fun()

这将导致:

new_fun(parameter) 

我们匹配旧函数,并捕获组1中的参数。然后替换为新函数,并使用

将参数(捕获在组1中)放入其中

实例:https://regex101.com/r/OqOGGX/1