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

时间:2019-05-15 22:18:34

标签: regex visual-studio-code sublimetext3

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

问题是我无法进行搜索替换,因为我需要将参数保留在()中,然后从调用中删除结束)。可以在Sublime或vscode这样的编辑器中做到这一点吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以在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