2012-06-01 168 views
1

我试图做一些查找和替换的Java源文件。正则表达式查找/替换

目前我班有无效的名称形式(从一个工具,没有自动命名低劣的进口):

public class [0-9]{2}[A-Za-z]+ 

我想插入周围数字下划线,导致的一个有效的类名形式

public class [_][0-9]{2}[_][A-Za-z]+ 

但是使用日食查找和替换工具,用在查找和替换字符串都正则表达式箱检查不格式化输出,因为我想。

这需要

02ListOfValidAppIDs 

,并使其

[-][0-9]{2}[_][A-Za-z]+ 

,而不是

_02_ListOfValidAppIDs 

正则表达式你怎么能够使保持任意数量和文字,只是它们插入了替换字符串?

(编辑:作为一个说明,与预览功能,我可以看到日食正确找出所有我想要替换的名字,并没有别的)

+0

你有'sed'吗? – Beta

+0

你在替换字段中使用了什么?这听起来像你需要创建一些捕获组,以便您可以在替换中反向引用它们。 – TLS

+0

不幸的是,我不在我的机器上,而是在我的实习机器上,并且卡在了WinXP上。有Windows的sed-like下载吗?如果有的话,我不太熟悉sed以外的那个linux。 –

回答

2

我不知道的确切味道正则表达式,你需要,但这样的事情应该让你开始正确的方向。

更新你的“查找”模式使用捕捉组:

(public class)([0-9]{2})([A-Za-z]+) 

然后在更换引用这些捕获:

\1_\2_\3 

注:正则表达式的一些味道会用{},而不是()代表捕获的组,并且一些风味将使用$1,$2$3等作为参考而不是使用\#

+0

谢谢。对于日食(如果有人绊倒这个),它是parens和$# –

2

在Eclipse的查找/替换对话框,这如果在Replace with框中使用

([0-9]+)([A-Za-z]+) 
Find

_$1_$2 

工作正常。

当然,Regular expressions框也必须检查。