【问题标题】: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()); 等等?
  • 不。它们肯定只是字母(名称)

标签: java regex sublimetext2


【解决方案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())
猜你喜欢
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 2011-06-16
  • 1970-01-01
相关资源
最近更新 更多