我有数百行,我想移动的每一行的特定结束小盘(可变长度开始,一切的“AS”之后)到特定的列位置的文本文件。
这是我需要定期执行的任务。我现在做的这个特定的格式在记事本++与找正取代行动,但最后的步骤是繁琐的手动选项卡在线式UPS。
原始模式是像(这是通过一些初步的格式化操作后,发现正取代行动):
red.id AS red_identifier red.c AS red_color mbr.red_mbr AS red_member stat.red_stat AS RED_STATUS
我想要的格式是这样的,所有的“AS ...”部分开始列X:
red.id AS red_identifier red.c AS red_color mbr.red_mbr AS red_member stat.red_stat AS RED_STATUS
任何帮助将非常如此感激!这可以在记事本++处理? Python的(只有我知道的语言)脚本可取?
您可以在2个步骤做:
说明:
\h+ # 1 or more horizontal spaces
(?= # start lookahead, zro-length assertion to make sure we have after:
AS # literally AS
\b # word boundary to make sure we don't match AS... (i.e. Asterisk)
) # end lookahead
结果对于给定的例子:
red.id AS red_identifier
red.c AS red_color
mbr.red_mbr AS red_member
stat.red_stat AS red_status
结果:
你可以用4个独立的基于正则表达式查找做到这一点/替换:
更换变化的基础上,以实现所期望的column x
比对所需的前导空格的数量。
正则表达式匹配:
后更换:
所以,正则表达式和替换为每个组是:
查找内容:(?:(AS red_[i].+))
//捕获AS red_identifier
文本
替换为:(7个前导空格)$ 1 // $ 1被捕获的文本替换
查找内容:(?:(AS red_[c].+))
//捕获AS red_color
文本
替换为:(8个前导空格)$ 1
查找内容:(?:(AS red_[m].+))
//捕获AS red_member
文本
替换为:(2个前导空格)$ 1
这些替代3将调整到AS
与AS red_status
的最后一行。当然,你可以调整间距,但正则表达式来在您的示例中的最后一行是:
查找内容:(?:(AS red_[s].+))
//捕获AS red_status
文本
替换为:(N前导空格)$ 1 // n
这里将是你可能想要的任何空格数。
你应该间距增加了4号线,然后间隔使用量有将需要被添加到第3,以维持所需column x
对齐。
例如,如果你在上线,然后才想4个多余的空格:
...保持对齐AS的column x
。