我目前正在处理一个大型代码库,最近其中一个 API 的签名发生了变化。所以我需要修改数千个文件才能获得新功能。所以开发了一个java程序来获取所有*.java
文件并寻找旧的API模式。如果发现用新模式替换它。
旧 API
API(3,Utils.FIFTY,key1,key4)
新 API
API(key1,key4)
所以我创建了一个正则表达式模式来匹配旧 API,因为API\([\d,\s\.\w]*(key[\.\w\s,]*)\)
如果它匹配它将替换它
replaceString = matcher.group(1) + "(" + matcher.group(2) + ")";
因此,使用当前代码而不是预期API(key1,key4)
,我得到了API(key4)
. 我已经分析了这个问题,我的推断是\w
捕获了第一个关键模式。如果我们需要匹配,我们需要做一个消极的展望。
任何人都可以分享解决正则表达式问题的最佳一致方法吗?