目前我必须将数千个代码转换为另一种代码格式。
Options.Autoskip = fileLogger->write("AutoSkip");
这个
fileLogger->write("AutoSkip") = Options.Autoskip;
基本上我必须根据中间" ="反转代码。信,但我不知道我应该使用什么/我该怎么做才能达到这个结果。我试过Notepad ++,但似乎它不支持这种"复杂的"替换工程。
如果有任何想法/计划来实现这一结果,请告诉我。
答案 0 :(得分:0)
如果您确定每行只有一个=
,那么正则表达式捕获组可以为您做到这一点。
例如,您可以在Notepad ++中使用Replace...
(Ctrl + H)(以及可能支持正则表达式的其他几个编辑器)执行此操作:
找到:^(.*?) = (.*?);$
替换为:\2 = \1;
^
匹配行开头。
(.*?)
非贪婪地匹配任何内容并将其放入捕获组(尽管如此,你可能会贪婪地匹配)。
$
与行结束匹配。
\1
是第一个捕获组(左侧),\2
是第二个捕获组(右侧)。将它们切换到替换和tada!
答案 1 :(得分:0)
使用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\(".{-}"\));/\3\2\1;/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(".*\?")\);/\3\2\1;/' src/*.cpp