查找替换的正则表达式

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())

以上是关于查找替换的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

notepad正则怎么替换其中一部分

Visual Studio、查找和替换、正则表达式

#转#VS2012 正则表达式 动态插入 动态替换 (查找和替换工具)

正则表达式查找/替换不同长度的文本

在多个文件中查找和替换正则表达式的最佳工具是啥?

查找替换的正则表达式