我正在从项目中更新旧代码,它具有数千个旧php mysql_real_escape_string()调用。
问题是我无法进行搜索替换,因为我需要将参数保留在()中,然后从调用中删除结束)。可以在Sublime或vscode这样的编辑器中做到这一点吗?
答案 0 :(得分:1)
针对您的特定问题(我正在使用Sublime Text 3)
示例字符串:
mysql_real_escape_string(parameter)
查找模式(请注意,我们需要对函数的括号进行转义):
mysql_real_escape_string\((.*?)\)
替换:
new_fun(\1)
这将导致:
new_fun(parameter)
我们匹配旧函数,并在组1中捕获参数。然后替换为新函数,并使用\1
将参数(在组1中捕获)放入内部。
答案 1 :(得分:0)
您可以在Sublime Text 3搜索和替换中使用捕获组。因此,您可以捕获参数并使用向后引用在替换的文本中对其进行引用。
在正则表达式中捕获组使用特殊的括号字符来“捕获”匹配项,并使它们在“后向引用” $1
,$2
等中可用,就像包含匹配组的变量一样。
SOMETHING_UNWANTEDMY_FIRST_CAPTURED_WORDSOMETHING_UNWANTEDMY_SECOND_CAPTURED_WORDSOMETHING_UNWANTED
SOMETHING_UNWANTED(MY_FIRST_CAPTURED_WORD)SOMETHING_UNWANTED(MY_SECOND_CAPTURED_WORD)SOMETHING_UNWANTED
$1$2
MY_FIRST_CAPTURED_WORDMY_SECOND_CAPTURED_WORD