基于中间字母替换(反转)代码



目前我必须将数千个代码转换为另一种格式的代码。

Options.Autoskip = fileLogger->write("AutoSkip");

这到

fileLogger->write("AutoSkip") = Options.Autoskip;

基本上我必须基于中间的"="字母反转代码,但我不知道我应该使用什么/我应该怎么做才能达到这个结果。我尝试了记事本++,但似乎它不支持这种"复杂"的替换作品。

如果有人有任何想法/计划来实现此结果,请告诉我。

如果您确定每行只有一个=,那么正则表达式捕获组可以为您做到这一点。

例如,您可以使用 Notepad++ 中的Replace... (Ctrl+H((可能还有其他几个支持正则表达式的编辑器(执行此操作:

查找内容: ^(.*?) = (.*?);$
替换为:2 = 1;

^ 匹配行首。 (.*?)非贪婪地匹配任何内容并将其放入捕获组(不过,您可能会在这里侥幸使用贪婪匹配(。 $与行尾匹配。

1是第一个捕获组(左侧(,2是第二个捕获组(右侧(。在替换和塔达中切换它们!

使用 Vim:

something else;
something else;
Options.Autoskip = fileLogger->write("AutoSkip");
Options.Hollowlens = fileLogger->write("HollowLens");
something else;
Options.Fluxcapactor = fileLogger->write("FluxCapactor");
something else;
Options.Answer = fileLogger->write("Answer");

输入 Ex 命令:

:%s/v(Options.w+)(s*=s*)(fileLogger->write(".{-}"));/321;/g

结果:

something else;
something else;
fileLogger->write("AutoSkip") = Options.Autoskip;
fileLogger->write("HollowLens") = Options.Hollowlens;
something else;
fileLogger->write("FluxCapactor") = Options.Fluxcapactor;
something else;
fileLogger->write("Answer") = Options.Answer;

使用 sed:

sed -i 's/(Options.w+)(s*=s*)(fileLogger->write(".*?"));/321;/' src/*.cpp

最新更新