博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Visual Studio中使用正则表达式匹配换行和批量替换
阅读量:5319 次
发布时间:2019-06-14

本文共 1605 字,大约阅读时间需要 5 分钟。

系统环境:Windows 8.1 Enterprise Update 2 x64

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

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

例子:

1         /// 2         /// 根据条件查询表中所有数据3         /// 4         /// 要分页显示的表名5         /// 以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段6         /// 以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC用于指定排序顺序7         /// 查询条件8         /// 
9 List
GetAllData
(string tableName, string fieldShow, string fieldOrder, string where) where T : new();

答案:

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

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

[\s]+[^\S\r\n]+List
或者 [\r\n]+[^\S\r\n]+List

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

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

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

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

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

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

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

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

[\r\n\t]+List
或者[\r\n]+[\t\t]+List

你将无法匹配到任何行。

因为在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在线帮助文档:

 

转载于:https://www.cnblogs.com/VAllen/p/VisualStudioRegexBatchReplace.html

你可能感兴趣的文章
分布式系统事务一致性解决方案
查看>>
开启一个项目如何上传到git
查看>>
ie文本框内容不居中问题
查看>>
利用grub2制作多启动U盘
查看>>
MQTT的学习研究(十三) IBM MQTTV3 简单发布订阅实例
查看>>
使用 github Pages 服务建立个人独立博客全过程
查看>>
posix多线程有感--线程高级编程(线程属性函数总结)(代码)
查看>>
spring-使用MyEcilpse创建demo
查看>>
JavaScript -- 数据存储
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
activity 保存数据
查看>>
scrapy-加蘑菇代理
查看>>
typescript深copy和浅copy
查看>>
linux下的静态库与动态库详解
查看>>
hbuilder调底层运用,多张图片上传
查看>>
深入理解基于selenium的二次开发
查看>>
11、类的继承
查看>>
单片机的动手实践篇--51单片机玩转12864
查看>>
较快的maven的settings.xml文件
查看>>