我有一堆变量(大约80个),我将这些变量copy+paste到编辑器中(从不同的*.txt文件中获取这些变量)。在这之后,它看起来有点凌乱
ka15 1-2 tre15 3-4 hsha15 5
juso15 6
kl15 7-9 kkjs15 10
但是我想让它结构化,以便更好地了解代码中发生的事情。我还必须从每个变量中去掉15。理想情况下我会得到这样的东西
ka 1-2 tre 3-4 hsha 5
juso 6 kl 7-9 kkjs 10
有什么聪明的方法来实现这一点吗?我使用的是,SAS企业指南编辑器,和VSCode,但是找不到方法。例如,当我找到并替换15时,我希望我可以用一个选项卡替换它,但是在这两个编辑器中都找不到该选项。有什么想法可以让这一切自动化吗?或者至少不是手工完成所有事情?
发布于 2019-01-22 09:21:32
我已经想出了3种能做你想做的事的regex。为了按顺序运行它们,您将需要重新替换扩展或类似的。
这在你的设置中是:
"regreplace.on-save": false,
"regreplace.commands": [
{
"name": "Transform Data to Table Format, step 1",
"regexp": "([a-zA-Z]+|[\\d-]+)(15)?(\\s[\r\n]?)*",
"replace": "$1 \n",
"priority": 1,
},
{
"name": "Transform Data to Table Format, step 2",
"regexp":
"(([\\S-] {6})(.*))|(([\\S-]{2} {5})(.*))|(([\\S-]{3} {4})(.*))|(([\\S-]{4} {3})(.*))",
"replace": "$2$5$8$11",
"priority": 2,
},
{
"name": "Transform Data to Table Format, step 3",
"regexp":
"((.*)\n)((.*)\n)((.*)\n)((.*)\n)((.*)\n)((.*?)(\\s*\\n))",
"replace": "$2$4$6$8$10$12\n",
"priority": 3,
}
],
它为三个regex步骤中的每个步骤创建一个规则。所有三个规则都可以通过运行regreplace.regreplace
命令依次运行。下面是一个演示:
regex的设计看起来很好,数据项长达4个字符,但是可以很容易地对较长的项进行修改。
在步骤1中,将替换规则中\n之前的空格数增加到16左右。
在第2步中,您必须感知regex组(如(([\\S-]{4} {3})(.*)
)的模式来修改它们。一个13个字符长的变量可能需要一些东西,比如(([\\S-]{13} {3})(.*)
作为最后一个组,([\\S-] {15})(.*))
作为序列中的第一个,等等,按顺序修改所有其他组。如果你需要帮助的话请告诉我。
步骤3不需要修改,除非您想要更改每行上出现了多少数据项--现在,每一行上有3个变量及其数据,因此在该正则表达式中有6个组。
在运行命令之前,在任何行中有多少个数据值对并不重要。
[两项警告:在数据开始之前不应该有任何空行,但如果有必要,可以将正则表达式作为删除空行的第一条规则。数据内部或末尾的空行都不是问题。
其次,扩展不能只在选定的文本上运行,因此您必须将数据放在一个空文件的顶部来转换它,然后如果您愿意,可以将它复制到其他地方。]
还有一个替换规则扩展,它的工作方式类似于重新替换,但是根据文档,它只运行在一个选择上,但是由于一些未知的原因,它对我来说不起作用。不过,它确实有一个更好的界面--所有regex都可以进入一个规则,然后可以独立运行。
https://stackoverflow.com/questions/54255395
复制相似问题