查找替换的正则表达式
Posted
技术标签:
【中文标题】查找替换的正则表达式【英文标题】:Regex for find Replace 【发布时间】:2014-11-18 12:57:54 【问题描述】:在this question 的上下文中,我想做以下更改:
查找:
funcA(param0,param1,param2,param3);
替换:
if(isTrue)
funcB(param0,funcC(param1,param2,param3));
funcA 可以有除 param0 之外的任意数量的参数。如何实现?为简单起见忽略基本情况,即传递给 funcA 的参数只有 param0。
funcA 是:
public void funcA(String param0,Object... params)
funcC 是:
public void funcB(Object... params).
编辑:
参数(param1,param2..) 只是包含字母的字符串。
【问题讨论】:
嵌套括号怎么样?funcA(param0,param1.trim(), param2, param3.size());
等等?
不。它们肯定只是字母(名称)
【参考方案1】:
搜索正则表达式:
^ *funcA *\(([^,\s;)]*) *(?:, *([^)\;]+))?
替换模式:
if(isTrue) funcB($1, funcC($2)
RegEx Demo
【讨论】:
嗨,这看起来不错。但是你可以让正则表达式首先找到 funcA。这里假设给定的行正在调用 funcA。我必须在我的代码中进行替换 谢谢。它也处理基本情况。 这不适用于以下情况。函数A(参数0); funcA(param0,param1,param2,param3);regex101.com/r/tO8qG1/3 但你写道:For simplicity ignore the base case
你想用什么替换funcA(param0);
?
虽然这是我要求的,但如果您也可以为基类提供正则表达式,那就太好了。 regex101.com/r/tO8qG1/6 此处第 4 行应转换为 if(isTrue) funcB(param0,funcC())以上是关于查找替换的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章