今天在工作中遇到了点替换的麻烦事,由于数据类进行了变动,具体情况是这样的,需要将下面的代码:

player.skillData[i].name

替换为:

player.skillData.getSkillInfo(i).name

具体来说就是将[i]改为getSkillInfo(i),不过遇到的问题是,需要修改的数量太多,200+个使用到的地方,而且括号中还不一定是“i”,可能是各种各样的形式(比如“index”、“_myIndex”等),总不能手动的一个一个改吧。。。

最后发现Eclipse是支持使用正则表达式的,所以只需要打开查找/替换窗口,勾上“正则表达式”,在查找文本框中填入:

(skillData\[)([a-zA-Z0-9_$]*)(\])

在替换为文本框中填入:

skillData.getSkillInfo($2)

好了,全部替换,当前文件下的所有文本都会被替换为我们需要的文本了。

最后重点说一下正则表达式的分组:

正则表达式会将匹配到的文本存储在“$”数组中,我们可以使用$0、$1、$2...访问到匹配成功的所有字符串,在表达式中,一个小括号即表示一个分组。

以我们的上面的表达式为例看一个示例,比如下面的文本:

var name:String = player.skillData[i].name;

经过匹配后的结果如下:

$0: skillData[i]
$1: skillData[
$2: i
$3: ]

我们发现,$0始终是匹配到的整个文本,而$1、$2和$3分别对应我们表达式中的3个小括号。

所以在替换时编写$2即表示这里使用匹配出的第二个小括号中的字符即“i”。

记录下我在解决工作中的大量上述修改的方法:

用Java或C#等语言编写一个工具来使用正则表达式替换指定格式的文本并不难,但是我不能直接一个表达式进行套用,这样可能会修改到正确的文本导致报错,所以相比替换更麻烦的是定位的问题。

1.如何精确定位?

我们使用的是Eclipse,在修改源码后问题窗口会提示报错的行,我们可以把这些数据复制出来,这些数据中可以取出报错的文件路径和行数,我们只处理报错的行,而不处理正确的行即可。

如果同一行有多个报错,我们会得到重复的两个信息,需要去掉多余的信息。

2.如何精确修改?

即使精确到行也可能会出现匹配错误的情况,比如“a.b”和“c.d”,我们可能只处理“a.b”,如果采用通用的正则就会修改两个,所以我们需要把关键字a直接加到正则中,就可以实现精确替换了。

关于在Eclipse中使用正则表达式替换的一点记录(使用正则表达式的分组)的更多相关文章

  1. eclipse中build workspace的相关优化

    网上流传的各种的eclipse的调优的方法都大同小异,但是调优的基本上针对eclipse或者myclipse的本身,比如关掉validate和启动项,文件拼写,和自动构建等,调过之后,等个eclips ...

  2. 将Android源码导入eclipse中的方法以及编译Android源码指定模块

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659 将android源码导入eclipse.androidstudio. ...

  3. Eclipse中使用正则表达式搜索替换

    Eclipse中使用正则表达式搜索替换 分类:software | 标签: 正则表达  替换  eclipse  2011-11-29 11:28 阅读(1930)评论(0)编辑删除 最近在eclip ...

  4. 使用Dreamweaver正则表达式替换href中的内容

    在Dreamweaver中使用正则表达式替换href中的内容,就像下面这些href中的内容复杂多样的情况下,href="/html/u.html",href="/tuho ...

  5. 正则表达式替换字符串中的html标签

    正则表达式替换字符串中的html标签 ··· var newStr = str.replace(/<[^>]+>/g, ''); ···

  6. C# 使用正则表达式替换PPT中的文本(附vb.net代码)

    文本介绍如何在C#程序中使用正则表达式替换PPT幻灯片中的指定文本内容.具体操作步骤如下: 1. 在程序中引用Spire.Presentation.dll.两种方法可参考如下: (1)直接在程序中通过 ...

  7. Android Studio 2.2.2导入Eclipse中创建的项目

    最近随视频教程学习Android,原本都是用Adt写Android程序,中途教程换成了Android Studio,于是我自己下了android studio 2.2.2安装好,并下载好sdk,也跟着 ...

  8. Eclipse中10个最有用的快捷键组合

    Eclipse中10个最有用的快捷键组合 (转) 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. ...

  9. 我们的相识,总是那么巧。-------eclipse中搭建maven项目

    一.我们就来谈下eclipse中搭建maven web工程的步骤!虽然就是一个简单的例子,但是过程是很艰辛的. 首先我们看一下eclipse的封面,下面就是刚打开的华丽封面哦 其次我安装了eclips ...

随机推荐

  1. 各浏览器各版本User-agent汇总 欢迎补充

    Internet Explorer Internet Explorer 5 Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; WOW64; Trident/ ...

  2. Linux“Bash”漏洞大爆发

    9月25日,国外曝出一个“毁灭级”的Bash漏洞,黑客可利用此漏洞远程执行任意命令,完全控制目标系统! 该漏洞编号为CVE-2014-6271,主要存在于bash 1.14 - 4.3版本中,受影响的 ...

  3. tomcat 默认项目设置

    正常情况下,我们启动tomcat后,直接输入“http://localhost:端口/“ 后,默认访问道是webapp目录下的ROOT应用. 我们要通过上述方式访问自己的应用,有俩种方式. 第一:把自 ...

  4. mysql违背了唯一约束

    执行一批数据,违背唯一约束时会中断,导致后面的数据写不进去. mysql有提供ignore关键字,使用insert ignore into .... 这样,当违背了唯一约束的时候~就会直接跳过,不会报 ...

  5. UI篇--Android中3种方法实现back键动作

    方法一:重写onBackPressed方法 @Override public void onBackPressed() { // do something what you want super.on ...

  6. Launcher2编译

    Android的源码包,压缩文件大概有3个G左右,要使用其中自带的一些源码需要很多技巧,否则会提示找不到一些库,大量的报错让人心神不定,不知所从. 我拿桌面代码举个例子吧. 桌面代码在源码包的pack ...

  7. Selenium IDE 测试

    Selenium IDE 测试 调试是为了发现和修复测试脚本,任何脚本开发的共同步骤是错误的处理.为了使这一过程更加稳固,我们可以使用Selenium IDE的一个插件叫“Power Debugger ...

  8. DzzOffice添加动态壁纸例子-Bing每日壁纸

    Bing每日壁纸介绍:bing网站每天会更新一张不同的精选图片. 此压缩包内的程序,可以自动同步更新cn.bing.com网站每天更新的图片,作为dzzoffice的壁纸使用.实现自动每天更换不同的云 ...

  9. ORA-15041: diskgroup space exhausted

    今天在做一个备份的时候,出现磁盘耗尽的错误,具体如下: RMAN-00571: =========================================================== ...

  10. 双网卡bond

           使用双网卡虚拟为一块网卡: 服务器版本: [root@kel ~]# lsb_release -a LSB Version: :core-3.1-amd64:core-3.1-ia32: ...