目前我必须将数千个代码转换为另一种格式的代码。
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