可以做到吗?我们正在使用 VS2005 和 VS2008 和 VS2010。
我不是指正则表达式——它们有它们的位置——而是普通的旧文本查找和替换。我知道我们可以(在紧要关头)使用 \n 标记使用正则表达式来做到这一点,但不希望与正则表达式转义字符纠缠在一起,而且还有一个可读性问题。
如果做不到,人们使用什么简单(免费)的替代方案?这不涉及敲我们自己的宏。
可以做到吗?我们正在使用 VS2005 和 VS2008 和 VS2010。
我不是指正则表达式——它们有它们的位置——而是普通的旧文本查找和替换。我知道我们可以(在紧要关头)使用 \n 标记使用正则表达式来做到这一点,但不希望与正则表达式转义字符纠缠在一起,而且还有一个可读性问题。
如果做不到,人们使用什么简单(免费)的替代方案?这不涉及敲我们自己的宏。
我终于找到了。。
无需下载和加载任何外部宏。
它至少在带有内置宏的 Visual Studio 2008 中工作。:)
步骤:
1) 选择要查找的文本。
2) 按“Alt+F8”或打开“工具 -> 宏 -> 宏资源管理器”
3) 双击“示例 -> 实用程序 -> FindLine”。(它将打开“查找”字段中加载您的选择的“查找”框。不要担心“查找”字段中显示的截断文本。相信我,字段拥有一切......MS显示它的方式可能是......: ) )
4) 单击“查找和替换”对话框中的“快速替换”按钮。输入替换为文本。
5)然后根据您的要求单击 3 个按钮中的任何一个……然后就完成了。:)
万岁.. 它的工作.. 可能不是一个直接的方法,但你知道 MS .. 没有什么是简单易行的.. :)
这适用于今天的 Visual Studio 2012:
fooPatternToStart.*(.*\n)+?.*barPatternToEnd
查看(.*\n)+?
零件如何跨多行匹配,非贪婪。
fooPatternToStart
是你的开始行上的一些正则表达式模式,而barPatternToEnd
你的模式是在下面的另一行上找到的,可能是下面的很多行......
示例在这里找到。
简单有效:)
注意:在VS2012 之前,有效的模式是:fooPatternToStart.(.\n)+@.*barPatternToEnd
您可以通过单击“查找和替换”对话框中的“使用正则表达式”复选框来搜索多行表达式。然后用 表示换行符\n
。
它仅由微软提供。请查看https://visualstudiogallery.msdn.microsoft.com/699CE302-B0D4-4083-BE0E-1682E873CEBF。
它只使用正则表达式。但是对于那些不了解正则表达式的人来说最好使用它。
您还可以使用完全支持多行替换的UltraEdit打开文件。如果您只打算使用一次,则可以使用试用版。
关于以上 2011 年 8 月 19 日 9:52 的 Andrew Corkery 的评论:
如果您还想指定多行替换字符串,请编辑宏代码并设置替换文本,如下所示。这将允许您通过所需的小修改来“微调”您的替换。
Sub FindLine()
Dim textSelection As TextSelection
textSelection = DTE.ActiveDocument.Selection
textSelection.CharLeft(True)
DTE.ExecuteCommand("Edit.Find")
DTE.Find.FindWhat = textSelection.Text
'also preset replacement text with current selection
DTE.Find.ReplaceWith = textSelection.Text
End Sub
Notepad++ 的最新版本(截至本文发布)执行多行查找/替换。当被问到这个问题时,我不知道这是否是真的。但是在 Visual Studio 中不再支持宏,这现在是相关的。