【发布时间】:2019-10-03 03:08:51
【问题描述】:
我正在从一个项目更新旧代码,它有数千个旧的 php mysql_real_escape_string() 调用。
问题是我无法进行搜索替换,因为我需要将参数保留在 () 中,然后从调用中删除关闭的 )。这可以在像 sublime 或 vscode 这样的编辑器中完成吗?
【问题讨论】:
标签: regex visual-studio-code sublimetext3
我正在从一个项目更新旧代码,它有数千个旧的 php mysql_real_escape_string() 调用。
问题是我无法进行搜索替换,因为我需要将参数保留在 () 中,然后从调用中删除关闭的 )。这可以在像 sublime 或 vscode 这样的编辑器中完成吗?
【问题讨论】:
标签: regex visual-studio-code sublimetext3
针对您的具体问题(我使用的是 Sublime Text 3)
示例字符串:
mysql_real_escape_string(parameter)
查找模式(注意我们需要对函数的括号进行转义):
mysql_real_escape_string\((.*?)\)
替换:
new_fun(\1)
这将导致:
new_fun(parameter)
我们匹配旧函数,捕获第1组中的参数。然后替换为新函数,并使用\1将参数(第1组中捕获)放入里面
【讨论】:
您可以在 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
【讨论】: