visual studio 使用正则查找或替换示例

简介: visual studio 使用正则查找或替换示例 注意哟:使用之前应做好备份 visual studio 2015: 多行替换 (.*)\{(?is)(?

visual studio 使用正则查找或替换示例

注意哟:使用之前应做好备份

visual studio 2015:

多行替换

(.*)\{(?is)(?<=\{)([\s\S\r\n][^}{]*)(?=\})\}

替换大括号内容

(.*)point\ =(.*);\r\n.+this.([A-Za-z0-9]*) \= point;
this.$3 = $2;

size\ =(.*);\r\n.+this.([A-Za-z0-9]*) \= size;
this.$2 = $1;

(.*)\= this.(.*);\r\n.(.*)size\ =(.*);\r\n.+([A-Za-z0-9]*).Size \= size;
this.$2.Size = $4;


(.*)\= this.(.*);\r\n.(.*)point\ =(.*);\r\n.+([A-Za-z0-9]*).Location \= point;
this.$2.Location = $4;

set\r\n.*{\r\n.*= this;\r\n.*new EventHandler\(([A-Za-z0-9]*).(.*)\);\r\n.*if \(this.*\r\n.*{\r\n.*this.*eventHandler;\r\n.*}\r\n.*this.*= value;\r\n.*if \(this.*\r\n.*{*\r\n.*this.(.*) \+\= eventHandler;\r\n.*}*\r\n.*}

set{this.$3 += $2;}

 

\r\n.*{\r\n.*get\r\n.*{\r\n.*return this.*;\r\n.*}\r\n.*set\r\n.*{\r\n.*this.* = value;\r\n.*}\r\n.*}

;

visual studio 2012:

 

1.
ObjRS_Items["companymatters")改为 ObjRS_Items["companymatters"]

ObjRS_Items\[\"([A-Za-z0-9_]*)\"\)
bjRS_Items["$1"]

 

2.
ObjRS_GSTCode.Fields["code"].Value 改为 ObjRS_GSTCode["code"]
([A-Za-z0-9_]*).Fields\[([\"a-zA-Z0-9]*)\].Value
$1[$2]

 

 

.get_([A-Za-z0-9\u4e00-\u9fa5]*)\(\)

.$1

\.set_([A-Za-z0-9\u4e00-\u9fa5]*)\((.*)\)
.$1=$2

\.get_Item\((.*)\)
[$1]

\.add_([A-Za-z0-9]*)\(([^\(\)]*)(((?'Open'\()[^\(\)]*)((?'-Open'\))([^\(\)]*)))*(?(Open)(?!))\)

.$1 += $2$3

  或粗略为 

\.add_([A-Za-z0-9\u4e00-\u9fa5]*)(.*)
.$1 += $2

\.remove_([A-Za-z0-9]*)(.*)
.$1 -= $2

 

visual studio 2010:
\.get_{[A-Za-z0-9]*}\(\)
.\1

 

\.set_{[A-Za-z0-9]*}\({.*}\)
.\1 = \2

.Visibility = 1
.Visibility= System.Windows.Visibility.Collapsed

\.get_Item\({\".*\"}\)
[\1]


\.get_Item\({:z}\)
[\1]

\.get_Item\({[a-z]*}\)
[\1]


\.add_{[a-z]*}{.*}
.\1 += \2

\.remove_{[a-z]*}{.*}
.\1 -= \2

--------------------------------------------------------------------------------------

相关情况介绍:

.NET Reflector 一款优秀的反编译工具: http://shy-feng.blog007.com/archives/2008916173215.aspx

 

以下文字来自

from: http://blog.tripdev.com/?tid=81

 

     Reflactor就不介绍了,.net下的免费反编译工具。Reflactor在某些情况下是很必须的,当遇到bug的时候,可以通过 Reflactor看其内部的实现机制,从而找到真正的bug所在。或者可以通过reflactor查看私有生成,然后在用反射去调用。
    上面说的都是正当用途,有的时候也可以用来反编译别人的软件。混淆了的软件,我就不管了。这里要讲的是没有混淆和加密的软件的反编译。reflector的右键菜单中的export就能做到反编译,如下图。
   
    反编译的文件默认保存在My Documents/Reflector/Disassembler下,但是这个反编译有一些问题,对于winform的资源文件无法反编译。这就需要我们另寻他法。
    经过我的不懈努力找到了一个插件File dessassemble,他能实现这样的功能。
    反编译出来后,用visual sutio打开后就能编辑了,但是有时候会有一些问题。下面总结一下。
1、编译没有问题,运行出现“类型初始值设定项引发异常”
    这主要是在类中使用了两个静态变量,而其中一个静态变量的初始化依赖令一个静态变量,而被依赖的静态变量放在依赖变量的前面,比如下面的代码就会出现这样的问题。


    问题很好解决,掉个个就解决了。

2、出现无法找到资源文件,如图片等
    这种情况一般是和资源文件的命名如果,请把资源文件命名保持和类一直,重新编译一下就会解决问题,注意需要重新生成,否则就不一定好使了。

3、打开form的时候出现错误
    这个问题,我通过搜索解决了,园子里有一篇文章,我转过来。

 用Reflector和FileDisassembler配合反编译.net Windows程序

URL: http:
//www.cnblogs.com/verygis/archive/2008/12/02/1346072.html

用FileDisassembler反编译Windows Application出现了问题,resx资源文件和cs文件不匹配,项目编译根本通不过,把resx文件修改放入cs文件夹后,虽然运行没有

问题,但是不能直接在窗体设计里面
"可视地"修改控件,一来麻烦,二来不直观,那么就应该修改下源代码,使其符合VS2008的源文件布局.

下面总结一下修改的步骤:

1.由于FileDisassembler会给每个命名空间生成一个目录,保存这个空间的源代码,而对于资源resx文件就是直接加在项目目录下,所有要把它放回源码目录下.例如

对于项目文件夹里面的TryAssemb.Form1.resx,首先改为Form1.resx然后移动到TryAssemb目录里面.

2.然后对窗体打开"视图设计器",发现会出现下面的错误:

修改方法就是对所有System.Windows.Forms.命名空间里面的控件需要全命名空间的声明,例如里面 
base.AutoScaleMode = AutoScaleMode.Font;就要改成base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 而TextBox textBox1; 也要改成private System.Windows.Forms.TextBox textBox1;这样 VS2008就能识别到这个控件是要绘制在Form上面的.

PS.开始是的时候还以为要像VS一样把Form1拆开成Form1.cs和Form1.Designer.cs.每次是都辛辛苦苦拆开,最后才发现原来根本不需要,
^_^.

相信大多数.Net程序员都有使用Reflactor的经历。无论出于什么目的,当用Reflactor反编译托管程序后,还想对其代码加以修改,那么本文所列举的可能是一份有用的参考。

用Reflactor的FileGenerator插件反编译代码后可以得到包括项目文件的源代码,但代码中存在各种问题,一般无法一次编译通过,以下将详谈这些问题:

枚举问题

为了代码可读,可能需要花点时间查阅metadata把int值修改回枚举值,尤其是想利用窗体设计器的,VS2008可能还不理解int值。

属性问题

比如一个叫Names的属性被反编译后,可能还原为的set_Names(names),get_Names()方法,逐个替换可能很慢,可采用正则表达式整体替换。
对于set_Xxx(xxx)方法,可替换
set_
{[a-z]*}/(

/
1 = (
对于get_Xxx()方法,可替换
get_
{[a-z]*}/(/)

/
1
然后,再修复个别被误换的方法。

委托和回调函数问题

一般会被还原为add_Xxx(MethodsName)方法,需要改为 
+= MethodsName

资源问题

需要使用.Net Framework SDK 下的 resgen.exe 工具,反编译嵌入资源文件
*.resources为*.resx文件,
语法为:ResGen.exe 
*.resources *.resx,然后将*.resx包含入项目,就会自动和同名的窗体文件*.cs关联,如果没有关联可采用先排除再添加大法,一一搞定。

命名空间问题

如果需要切换到IDE的窗体设计器,而不出错,则还需要在
*.cs中添加比如System.Windows.Forms的命名空间前缀。

窗体设计器识别问题

需要把以下代码
ComponentResourceManager manager 
= new ComponentResourceManager(typeof(ClassName));
替换为
System.ComponentModel.ComponentResourceManager resources 
= new System.ComponentModel.ComponentResourceManager(typeof(ClassName));
窗体设计器才能正常识别。

fm: http:
//blog.csdn.net/ma_ta/archive/2008/12/11/3497532.aspx
目录
相关文章
|
4月前
idea全局正则替换
idea全局正则替换
70 0
|
6月前
|
JSON JavaScript 前端开发
在 Visual Studio Code 里如何设置让搜索忽略指定的文件夹
在 Visual Studio Code 里如何设置让搜索忽略指定的文件夹
189 0
|
C# Windows
基于C#的ArcEngine二次开发30: visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串
基于C#的ArcEngine二次开发30: visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串
基于C#的ArcEngine二次开发30: visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串
|
Python
PyCharm正则替换
PyCharm正则替换
项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模糊匹配,前缀匹配,后缀匹配;重命名:模糊替换,前缀追加,后缀追加
项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模糊匹配,前缀匹配,后缀匹配;重命名:模糊替换,前缀追加,后缀追加
项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模糊匹配,前缀匹配,后缀匹配;重命名:模糊替换,前缀追加,后缀追加
|
前端开发 JavaScript 程序员
Visual Studio Code一个帮助我们进行括号配对的扩展应用,Rainbow
Visual Studio Code一个帮助我们进行括号配对的扩展应用,Rainbow
119 0
Visual Studio Code一个帮助我们进行括号配对的扩展应用,Rainbow
|
Android开发
eclipse+正则+替换
eclipse+正则+替换
92 0
eclipse+正则+替换
介绍一个能将任意关键字高亮实现的 Visual Studio Code 扩展
介绍一个能将任意关键字高亮实现的 Visual Studio Code 扩展
885 0
介绍一个能将任意关键字高亮实现的 Visual Studio Code 扩展
|
Python
如何在 Python 中搜索和替换文件中的文本?(1)
如何在 Python 中搜索和替换文件中的文本?
547 0
如何在 Python 中搜索和替换文件中的文本?(1)
|
Python
如何在 Python 中搜索和替换文件中的文本?(2)
如何在 Python 中搜索和替换文件中的文本?
121 0
如何在 Python 中搜索和替换文件中的文本?(2)