Visual Studio Code中的多行正则表达式搜索

时间:2018-10-04 13:23:49

标签: visual-studio-code vscode-settings

多行正则表达式搜索在VS Code 1.27.2版中不起作用。

理论上,aaa(\n|.)*bbb应该找到以aaa开头并以bbb结尾的字符串,但是它不起作用。 Multi-line regular expressions in Visual Studio Code此处提到的解决方案也不起作用。

6 个答案:

答案 0 :(得分:19)

是的,您可以在 VScode 中使用正则表达式进行多行搜索。

要查找从 aaa 开始并以第一个 bbb(惰性限定符)结尾的多行文本块

aaa(.|\n)+?bbb

要查找从 aaa 开始到最后一个 bbb 结束的多行文本块。 (贪婪的限定符)

aaa(.|\n)+bbb

答案 1 :(得分:8)

多行搜索已添加到2018年11月发布的v1.29中。请参见multi-line search

  

VS Code现在支持多行搜索!与编辑器中的正则表达式相同   仅当搜索包含\ n文字时,才以多行模式执行搜索。   搜索视图在每个多行匹配项旁边显示一个提示,   额外的匹配行数。

     

由于在ripgrep工具中完成的工作,因此可以使用此功能   实现多行搜索。

multiline search: October 2018 release notes

答案 2 :(得分:1)

您可以使用以下简单的正则表达式在多行中查找和替换: StringStart \ r \ nStringEnd

例如

public string MethodA(int x)
{ 
    var user;  
}

public string MethodB(string y)
{
    var user;  
}

public string MethodC(int x)
{ 
     var user;  
}

public string MethodD(float x)
{ 
     var user;  
}

如果要将用户变量的名称替换为customer,将方法参数名称替换为user,而仅将int替换为user。

然后要查找的正则表达式将是:int x)\ r \ n EnterBlankSpacesHereToReachTheString {\ r \ n EnterBlankSpacesHereToReachTheString var用户

和要替换的正则表达式将是:int用户)\ r \ n EnterBlankSpacesHereToReachTheString {\ r \ n EnterBlankSpacesHereToReachTheString var客户

请参阅以供参考 link

答案 3 :(得分:0)

此行为的原因非常简单。

尚未执行多行搜索。

请参阅:Support multi-line search for Global search

答案 4 :(得分:0)

现在,在1.30及更高版本的vs代码中,无需使用正则表达式即可进行多行搜索。

在搜索框中输入

Type Shift + Enter 插入换行符,搜索框将显示完整的多行查询。您还可以从编辑器中复制多行选择并将其粘贴到搜索框中。

Example

答案 5 :(得分:0)

不使用正则表达式:您可以复制多行文本并将其粘贴为“在文件中查找”形式:

enter image description here

“全部替换”的结果:

enter image description here