zoukankan      html  css  js  c++  java
  • 在Visual Studio中使用正则表达式匹配换行和批量替换

    系统环境:Windows 8.1 Enterprise Update 2 x64

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

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

    例子:

    1         /// <summary>
    2         /// 根据条件查询表中所有数据
    3         /// </summary>
    4         /// <param name="tableName">要分页显示的表名</param>
    5         /// <param name="fieldShow">以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段</param>
    6         /// <param name="fieldOrder">以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC用于指定排序顺序</param>
    7         /// <param name="where">查询条件</param>
    8         /// <returns></returns>
    9         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
    ]+List<T>
    或者
    </returns>[ ]+[^S ]+List<T>

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

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

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

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

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

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

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

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

    </returns>[
    	]+List<T>
    或者
    </returns>[
    ]+[		]+List<T>

    你将无法匹配到任何行。

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

    而Ss是什么意思呢?

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Chrome 已经原生支持截图功能,还可以给节点截图!
    【promise| async/await】代码的控制力
    移动端各种分辨率手机屏幕----适配方法集锦
    Web Storage事件无法触发
    【php学习】图片处理三步走
    NYOJ 36 LCS(最长公共子序列)
    NYOJ 252 01串 普通dp
    NYOJ 18 The Triangle 填表法,普通dp
    NYOJ-171 聪明的kk 填表法 普通dp
    NYOJ17 最长单调递增子序列 线性dp
  • 原文地址:https://www.cnblogs.com/VAllen/p/VisualStudioRegexBatchReplace.html
Copyright © 2011-2022 走看看