我的Java应用程序正试图从一个文件中,修改下面一行:Java的正则表达式替换精确匹配
static int a = 5;
我们的目标是“A”与“mod_a”来代替。
使用简单string.replace(var_name, "mod" + var_name)
给了我下面的:
stmod_atic int mod_a = 5;
这是相当完全错误的。谷歌搜索我发现,你可以预先安排“\ B”,然后var_name必须代表一个字的开头,但是,string.replace("\\b" + var_name, "mod" + var_name)
绝对没有:(
(我也用“\ b”而不是“\ b “)
我很乐意给你的建议Pattern.quote另投,可惜我不能:( – 2012-07-26 10:54:12
记住,正则表达式是不完美的一样复杂的语义匹配编程语言,例如试图用'mod_a'代替'a' @ Joachim的正则表达式也会影响标识符的注释和其他实例。 a_mod {public a_mod(int a_mod){...'。Oops。 – LisMorski 2012-07-26 10:58:17
@LisMorski:非常真实:正则表达式并不能代替真正的重构工具!但是,如果你直观地扫描结果以达到理智;-) – 2012-07-26 11:01:43