visual studio 使用正则查找或替换示例
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
--------------------------------------------------------------------------------------
相关情况介绍:
以下文字来自
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的源文件布局. 下面总结一下修改的步骤: .由于FileDisassembler会给每个命名空间生成一个目录,保存这个空间的源代码,而对于资源resx文件就是直接加在项目目录下,所有要把它放回源码目录下.例如 对于项目文件夹里面的TryAssemb.Form1.resx,首先改为Form1.resx然后移动到TryAssemb目录里面. .然后对窗体打开"视图设计器",发现会出现下面的错误: 修改方法就是对所有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]*}/(
为
/ = (
对于get_Xxx()方法,可替换
get_{[a-z]*}/(/)
为
/
然后,再修复个别被误换的方法。 委托和回调函数问题 一般会被还原为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
visual studio 使用正则查找或替换示例的更多相关文章
- JS 正则查找与替换
JS正则查找与替换 一.前提/背景 今天遇到个问题,需要替换字符串中部分字符,这些字符相对整个字符串而言,与其他子字符串类似,无法单独提出:重要的是,该字符串是动态的生成的,就像我们日常看到的网页Ur ...
- Visual studio 使用正则表达查找替换
原文 http://www.cnblogs.com/shineqiujuan/archive/2012/07/04/2575535.html 正则表达式是查找和替换文本模式的一种简洁而灵活的表示法. ...
- frontpage 正则 查找与替换
frontpage正则查找替换 frontpage查找用{}[不是() ]来匹配pattern, 并获取这一匹配 替换时匹配的字符用\1 \2 \3表示 第 N 个标记表达式 \N 在“替换”表达式中 ...
- Notepad 列编辑、正则查找、替换
目标: 将源数据转成初始化sql语句.源数据: 104110040018,1,中国银行,中国银行天津琼州道支行,NULL,1100,天津市,12,天津市 104110040059,1,中国银行,中国银 ...
- golang 常用的正则查找与替换
package main; import ( "regexp" "fmt" "strings" ) func main() { //1.过正 ...
- 使用 Visual Studio 分析器找出应用程序瓶颈(转)
使用 Visual Studio 分析器找出应用程序瓶颈 Hari Pulapaka and Boris Vidolov 本文讨论: 以性能瓶颈为目标 应用程序代码分析 比较分析数据 性能报告 本文使 ...
- 使用 Visual Studio 分析器找出应用程序瓶颈
VS的性能分析工具 性能分析工具的选择 打开一个“性能分析”的会话:Debug->Start Diagnotic Tools Without Debugging(或按Alt+F2),VS2013 ...
- 12个Visual Studio调试效率技巧
在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到函数内(如果 ...
- BUILD 2015: Visual Studio对GitHub的支持
微软BUILD 2015大会上发布了Visual Studio 对GitHub的支持.安装了如下Developer Assistant插件后,你便可以在Visual Studio中找到GitHub上的 ...
随机推荐
- ImageButton自定义按钮的按下效果的高效实现方法(非一般)
通常情况下,我们可以采用如下方式实现: <?xml version="1.0" encoding="UTF-8"?> <selector xm ...
- WebApi接口开发
文档 规范的文档对接口的开发有着至关重要的作用,规范的文档能够使 双方对接口的定义以及接口的参数都有一个明确的概念,便于沟通和联调. 在接口的开发过程中,为了保证传递参数的传递的私密性,参数传输是需要 ...
- C# - 创建List属性的简单方法
不用担心List没有创建问题. private ObservableCollection<EquipmentItem> _optionalCollection; public Observ ...
- 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter
第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...
- ubuntu14.04 cocos2d-x-3.6 glfw编译出错解决方案
lib/libcocos2d.a(CCGLViewImpl-desktop.cpp.o): In function `cocos2d::GLViewImpl::GLViewImpl()': /home ...
- Android开发小问题——java使用
2013-09-25 导语:离上次写博客有点久了,这次写两个开发中解决的问题吧. 正文: 1.ArrayList<E>使用remove问题: 2.字符串映射到函数运行方法: ==== 1. ...
- asp.net服务器向客户端弹出对话框,但不使页面边白板
1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Web; 5: ...
- 限制内容长度(CSS,jQuery)
CSS(宽度限制在100px之内,超出就会点点点) <style type="text/css"> p{width: 100px;display: inline-blo ...
- HTML5 prefetch即预加载
原文地址 声明:此文带着自己的理解,不完全按原文翻译 prefetch 即预加载,在用户需要前我们就将所需的资源加载完毕. 有了浏览器缓存,为何还需要预加载? 用户可能是第一次访问网站,此时还无缓存 ...
- WebApi2官网学习记录--HTTP Message Handlers
Message Handlers是一个接收HTTP Request返回HTTP Response的类,继承自HttpMessageHandler 通常,一些列的message handler被链接到一 ...