Regexp x.get(y) - > X [Y]

时间:2013-10-02 05:13:31

标签: regex notepad++

在将多行代码从一种语言移植到另一种语言时,我必须将所有数组访问权限从函数调用x.get(y)的形式替换为方括号符号x[y]。很少有文本编辑器可以做基于正则表达式的替换

在“要查找的文本”字段中应键入的内容以及在此情况下应在“替换为”字段中键入的内容? xy都可以有所不同,因此原始代码可以包含以下行:

... state.get(1);
... text.get(i);
... result.get(line);
转换后

... state[1];
... text[i];
... result[line];

2 个答案:

答案 0 :(得分:4)

您可以搜索\.get\((\w+)\)并替换为[$1]

上述模式假设括号之间只有字母数字字符,但还有其他选择:

  • .*(不检查“。匹配换行符”)应该匹配到行尾。
  • [^)]*应匹配不是)的字符。适用于新线路。

在这两种情况下,您可能想要在您的模式中加入;

请注意,这种方式非常脆弱 - 您可能会遇到类似state.get(a.get(3 + sin(6)))的代码,并且可能会得到错误的结果。

答案 1 :(得分:1)

对于Notepad ++,我会写在查找内容:([0-9,a-z,A-Z,-,_]+).get\(([0-9,a-z,A-Z,-,_]+)\)

替换为\1[\2]

输入:

x.get(1);
text.get(i);
result.get(line);

输出:

x[1];
text[i];
result[line];

enter image description here