系统环境:Windows 8.1 Enterprise Update 2 x64

开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC

问题:如何在Visual Studio中使用正则表达式匹配换行符,空白符,Tab符等特殊符号,并且在当前文档或当前项目或整个解决方案中批量替换你指定的代码文字?

例子:

         /// <summary>
/// 根据条件查询表中所有数据
/// </summary>
/// <param name="tableName">要分页显示的表名</param>
/// <param name="fieldShow">以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段</param>
/// <param name="fieldOrder">以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC用于指定排序顺序</param>
/// <param name="where">查询条件</param>
/// <returns></returns>
List<T> GetAllData<T>(string tableName, string fieldShow, string fieldOrder, string where) where T : new();

答案:

在Visual Studio IDE 中按 Ctrl+Shift+H 打开[在文件中替换]的窗口,

在{查找内容(N):}文本框中输入:

</returns>[\s]+[^\S\r\n]+List<T>
或者
</returns>[\r\n]+[^\S\r\n]+List<T>

在{替换为(P):}文本框中输入:

</returns>\r\n\t\t[Obsolete("不建议使用该方法,请使用同签名的方法代替。")]\r\n\t\tList<T>

在{查找范围(L):}下拉框中选择,你需要查找的范围,因为我是要整个当前项目中所有匹配项替换,所以我选择的是"当前项目"。

按{全部替换(A)},就会把所有匹配项全部替换成你所需要替换的内容了。

这次我批量替换了共67个文件,67行。

解答:这次我是想在XML注释的尾部以及该尾部的下一行首单词中间添加一行

[Obsolete("不建议使用该方法,请使用同签名的方法代替。")]

XML尾部是</returns>,而该尾部的下一行首单词是List<T>,在这两行之间有几个我们看不见的转义符\r\n\t,然而如果我们把正则表达式写成这样:

</returns>[\r\n\t]+List<T>
或者
</returns>[\r\n]+[\t\t]+List<T>

你将无法匹配到任何行。

因为在Visual Studio,你若需要匹配换行符以及空白符,需要配合[\S\s]以及[^]。

而\S\s是什么意思呢?

大写的\S是匹配任何非空白字符。

小写的\s是匹配任何空白字符,其中包括空格,制表符和换页符。

而^是将匹配字符串锚定到行首或字符串首。

+就不用说了吧?是匹配前面表达式的一个或更多匹配项(并匹配尽可能多的字符)。

因为行尾包含\r\n,所以你可以用[\r\n]或者[\s],在不确定有多少个这样的特殊转义符的情况下,使用[\r\n]+或者[\s]+

重点来了,因为要匹配下一行,即换行,所以你还需要加个^,在你有用Visual Studio内置格式化的情况下,虽然行首是一个\t或以上,但是你仍然要用\S来替代,组合起来就是[\S\r\n]+。

拼接起来就得到了</returns>[\s]+[^\S\r\n]+List<T>了。

而在{替换为(P):}那里,比较简单,就不做详述了。

参考Visual Studio 官方MSDN在线帮助文档:http://msdn.microsoft.com/en-us/library/2k3te2cs.aspx

在Visual Studio中使用正则表达式匹配换行和批量替换的更多相关文章

  1. visual Studio 中使用正则表达式来进行查找替换

    1.打开visual Studio 2. 通过菜单Edit -->Find and Replace -->Replace In File  ,或者使用  ctrl + Shift + H  ...

  2. 在 Visual Studio 中使用正则表达式

    Visual Studio 使用 .NET framework 正则表达式查找和替换文本. 在 Visual Studio 2010 和早期版本中,Visual Studio 在“查找和替换”窗口中使 ...

  3. Visual Studio 中使用的正则表达式 说明

    Visual Studio 中使用的正则表达式 说明 2013-10-11 21:10:12|  分类: VB和VBA知识|举报|字号 订阅       参考:详解Visual Studio正则替换大 ...

  4. 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目

    原文: 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目 本主题介绍如何在以下产品中使用 一键式发布 发布(部署)Web 应用程序项目: Visual Studio ...

  5. 在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示

    在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示 当我们在VS的C++中使用vector.list.map等这些STL容器,在开启调试的时 ...

  6. 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支

    使用VSTS的Git进行版本控制(四)--在Visual Studio中管理分支 可以从web版Team Services Git repo 的Branches视图中管理工作.定制视图来跟踪最关注的分 ...

  7. VS2017远程调试C#或 Visual Studio 中的 Visual Basic 项目

    来源:远程调试C#或 Visual Studio 中的 Visual Basic 项目 若要调试已部署在另一台计算机的 Visual Studio 应用程序,安装和在其中部署您的应用程序的计算机上运行 ...

  8. 在visual studio code和visual studio中编写TypeScript文件自动生成JavaScript文件

    注:此处的自动生成都为保存ts文件时自动生成js文件 VS CODE 只需要在TypeScript的终端控制台中输入如下命令即可,并注意需要将其中的*换成对应的文件名,此处的*似乎不能作为通用匹配. ...

  9. Visual Studio中你所不知道的智能感知

    在Visual Studio中的智能感知,相信大家都用过.summary,param,returns这几个相信很多人都用过的吧.那么field,value等等这些呢. 首先在Visual Studio ...

随机推荐

  1. java实现输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

    package JingDian; import java.util.Scanner; public class charKind { public static void main(String[] ...

  2. 据说每个大牛、小牛都应该有自己的库——Event处理

    今天抽时间写了一部分Event处理方面的函数愈发的觉得jQuery的优秀,自己前期的想法太粗糙,造成后面这些函数参数很多,操作很很不直观,看样子是要重构的节奏,还好小伙儿伴们安慰,架构都是改出来的.继 ...

  3. 为 Exchange 服务器编写自定义的反垃圾插件

    Exchange 2010 的 Edge Transport 包含了一些 Anti-spam 的 Feature,如图: 都开启了,但是呢,还是会有漏网之鱼,而且把这些邮件自己列为 Junk 也起不了 ...

  4. 已经为类型参数“Chart”指定了 constraint 子句。必须在单个 where 子句中指定类型参数的所有约束

    public abstract class FillWorkBook<TModel, Chart> where TModel : struct where Chart : new() wh ...

  5. Java-类与类之间的关系

    类与类之间的几种关系   一.继承关系      继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字exte ...

  6. Atitit  循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

    Atitit  循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate). 1.1. 循环算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. ...

  7. 从双十一战报看传统大家电如何O2O转型?

    说到大家电电商,大家都会想起天猫.京东.苏宁易购.国美在线等各大电商平台,他们这一次的双十一又实现了较大规模的增长,而各大电商平台家电辉煌战绩的背后实际上是各大品牌家电的成功. 格力今年双十一当天创下 ...

  8. 使用XSD校验Mybatis的SqlMapper配置文件(2)

    编写好XSD文件,然后来看怎么使用XSD文件校验,并解析SqlMapper文件,也就是实现doParseSqlMapperResourceWithSchema()方法. 为了实现这个功能,有两个基本要 ...

  9. SSIS的DelayValidation属性

    一,DelayValidation Property true if validation of the package is delayed until run time. false if the ...

  10. ::after::before清除浮动原理

    先来看一段代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...