关于在Eclipse中使用正则表达式替换的一点记录(使用正则表达式的分组)
今天在工作中遇到了点替换的麻烦事,由于数据类进行了变动,具体情况是这样的,需要将下面的代码:
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中使用正则表达式替换的一点记录(使用正则表达式的分组)的更多相关文章
- eclipse中build workspace的相关优化
网上流传的各种的eclipse的调优的方法都大同小异,但是调优的基本上针对eclipse或者myclipse的本身,比如关掉validate和启动项,文件拼写,和自动构建等,调过之后,等个eclips ...
- 将Android源码导入eclipse中的方法以及编译Android源码指定模块
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659 将android源码导入eclipse.androidstudio. ...
- Eclipse中使用正则表达式搜索替换
Eclipse中使用正则表达式搜索替换 分类:software | 标签: 正则表达 替换 eclipse 2011-11-29 11:28 阅读(1930)评论(0)编辑删除 最近在eclip ...
- 使用Dreamweaver正则表达式替换href中的内容
在Dreamweaver中使用正则表达式替换href中的内容,就像下面这些href中的内容复杂多样的情况下,href="/html/u.html",href="/tuho ...
- 正则表达式替换字符串中的html标签
正则表达式替换字符串中的html标签 ··· var newStr = str.replace(/<[^>]+>/g, ''); ···
- C# 使用正则表达式替换PPT中的文本(附vb.net代码)
文本介绍如何在C#程序中使用正则表达式替换PPT幻灯片中的指定文本内容.具体操作步骤如下: 1. 在程序中引用Spire.Presentation.dll.两种方法可参考如下: (1)直接在程序中通过 ...
- Android Studio 2.2.2导入Eclipse中创建的项目
最近随视频教程学习Android,原本都是用Adt写Android程序,中途教程换成了Android Studio,于是我自己下了android studio 2.2.2安装好,并下载好sdk,也跟着 ...
- Eclipse中10个最有用的快捷键组合
Eclipse中10个最有用的快捷键组合 (转) 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. ...
- 我们的相识,总是那么巧。-------eclipse中搭建maven项目
一.我们就来谈下eclipse中搭建maven web工程的步骤!虽然就是一个简单的例子,但是过程是很艰辛的. 首先我们看一下eclipse的封面,下面就是刚打开的华丽封面哦 其次我安装了eclips ...
随机推荐
- iOS开发:应用生命周期
iOS应用通过委托对象AppDelegate类在应用周期的不同阶段会回调不同的方法,应用周期分为以下五种状态: Not Running(非运行状态).应用没有运行或被系统终止. Inactive ...
- LA 3890 (半平面交) Most Distant Point from the Sea
题意: 给出一个凸n边形,求多边形内部一点使得该点到边的最小距离最大. 分析: 最小值最大可以用二分. 多边形每条边的左边是一个半平面,将这n个半平面向左移动距离x,则将这个凸多边形缩小了.如果这n个 ...
- 关于存储过程 output 问题
在游标循环当中给 output 变量赋值报 指定的转换无效 错误必须在存储过程最后再给 output 变量赋值
- Java [Leetcode 118]Pascal's Triangle
题目描述: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5 ...
- (转)Linux上的Shebang符号(#!)
https://linux.cn/article-3664-1.html 本文了将给你简单介绍一下Shebang(”#!”)这个符号. 首先,这个符号(#!)的名称,叫做”Shebang”或者”Sha ...
- C#中使用visio控件
C#中使用visio控件 2012-08-25 18:14:19| 分类: 技术相关|举报|字号 订阅 其实就是C#访问VISIO的自动化模型,以前做了不少C#和Excle及word 的交互 ...
- Matlab编程实例(2) 同期平均
%多点同期平均 close all; clear all; pi = 3.14159; Samp2=input('您需要几组信号做同期平均?') Samp1=1000 %设置采样精度 t = lins ...
- 在Ubuntu下安装Apache
在Ubuntu下安装软件其实非常方便,Ubuntu提供了apt-get工具,可以使用该工具直接下载安装软件. 在Linux里,系统最高权限账户为root账户,而默认登录的账户并非root账户,例如不具 ...
- zoj3822-Domination (概率dp)
题意: 给你n*m的棋盘,每天选择的一个空的方格放一个棋子,求使棋盘的每行每列都至少有一个棋子的天数期望. 分析: 先想状态,要使每行每列都至少一个,考虑前i行j列,能放得就是i行j列里面的或第i+1 ...
- poj 1505 Copying Books
http://poj.org/problem?id=1505 Copying Books Time Limit: 3000MS Memory Limit: 10000K Total Submiss ...