在Visual Studio中使用正则表达式匹配换行和批量替换
系统环境: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中使用正则表达式匹配换行和批量替换的更多相关文章
- visual Studio 中使用正则表达式来进行查找替换
1.打开visual Studio 2. 通过菜单Edit -->Find and Replace -->Replace In File ,或者使用 ctrl + Shift + H ...
- 在 Visual Studio 中使用正则表达式
Visual Studio 使用 .NET framework 正则表达式查找和替换文本. 在 Visual Studio 2010 和早期版本中,Visual Studio 在“查找和替换”窗口中使 ...
- Visual Studio 中使用的正则表达式 说明
Visual Studio 中使用的正则表达式 说明 2013-10-11 21:10:12| 分类: VB和VBA知识|举报|字号 订阅 参考:详解Visual Studio正则替换大 ...
- 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目
原文: 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目 本主题介绍如何在以下产品中使用 一键式发布 发布(部署)Web 应用程序项目: Visual Studio ...
- 在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示
在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示 当我们在VS的C++中使用vector.list.map等这些STL容器,在开启调试的时 ...
- 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支
使用VSTS的Git进行版本控制(四)--在Visual Studio中管理分支 可以从web版Team Services Git repo 的Branches视图中管理工作.定制视图来跟踪最关注的分 ...
- VS2017远程调试C#或 Visual Studio 中的 Visual Basic 项目
来源:远程调试C#或 Visual Studio 中的 Visual Basic 项目 若要调试已部署在另一台计算机的 Visual Studio 应用程序,安装和在其中部署您的应用程序的计算机上运行 ...
- 在visual studio code和visual studio中编写TypeScript文件自动生成JavaScript文件
注:此处的自动生成都为保存ts文件时自动生成js文件 VS CODE 只需要在TypeScript的终端控制台中输入如下命令即可,并注意需要将其中的*换成对应的文件名,此处的*似乎不能作为通用匹配. ...
- Visual Studio中你所不知道的智能感知
在Visual Studio中的智能感知,相信大家都用过.summary,param,returns这几个相信很多人都用过的吧.那么field,value等等这些呢. 首先在Visual Studio ...
随机推荐
- UWP开发笔记——嵌套式页面的实现
绪论 UWP开发中,Page是最常用的Control之一,通常情况下,在开发的application中,每一个页面就是一个Page.有时候,为了开发整合度更高,UI表现更为一致的UI,开发者需要把UI ...
- 【星路演】DeviceOne:跨平台APP开发平台
视频 DeviceOne是一个跨Android.IOS.Windows三个平台的一个PAAS平台,主要是提供给开发者一个节省70%的成本一个开发. 我们原来想做一个APP,我们会去找三个平台的原生人员 ...
- Matrix Admin 后台模板笔记
一个后台模板用久了就想换一个.上次找到了Matrix Admin.和ACE一样都是Bootstrap风格,比较容易上手.Matrix要更健壮些.感觉拿去做用户界面也是可以的. 整体风格: 1.表单验证 ...
- Caliburn实现MVVM模式的编程
引言:什么是Caliburn ? 一个夜晚,一处教堂,人们忏悔结束后抬头看到一把宝剑插在一块石头上.石上字述“英格兰人,凡能从石头上拔出剑者,为王者!”,Caliburn就是英格兰人心中的石中剑,这把 ...
- C#最良心脚本语言C#Light/Evil,Xamarin\WP8\Unity热更新最良心方案,再次进化.
C#Light的定位是嵌入式脚本语言,一段C#Light脚本是一个函数 C#Evil定位为书写项目的脚本语言,多脚本文件合作,可以完全用脚本承载项目. C#Light/Evil 使用完全C#一致性语法 ...
- 细说.NET 中的多线程 (一 概念)
为什么使用多线程 使用户界面能够随时相应用户输入 当某个应用程序在进行大量运算时候,为了保证应用程序能够随时相应客户的输入,这个时候我们往往需要让大量运算和相应用户输入这两个行为在不同的线程中进行. ...
- Web开发人员必读的12个网站
The more you actually create, the more you’ll learn.(创造的越多,学习的越多),世界上有无数个开发人员会在网上分享他们的开发经验,我们无法向所有人学 ...
- Linux 容器技术史话:从 chroot 到未来
Linux 容器是一个在单一 Linux 主机上提供多个隔离的 Linux 环境的操作系统级虚拟技术.不像虚拟机(VM),容器并不需要运行专用的访客(guest)操作系统.容器们共享宿主机的(host ...
- 实现步骤: 推送&传感器&UIDynamic
一.本地通知基本使用: #01.请求授权(8.0以前默人授权) #02.创建本地通知 #03.设置通知内容 #04.设置通知时间(多久后发通知) #05.发送通知 二.本地通知而外设置: #01.设置 ...
- 使用Spring的Validator接口进行校验
你可以使用Spring提供的validator接口进行对象的校验.Validator接口与Errors协同工作,在Spring做校验的时候,它会将所有的校验错误汇总到Errors对象中去. 来看这个简 ...