如何将某一行文字,可变位置,以特定的列

问题描述 投票:1回答:2

我有数百行,我想移动的每一行的特定结束小盘(可变长度开始,一切的“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的(只有我知道的语言)脚本可取?

python search notepad++ text-formatting
2个回答
0
投票

您可以在2个步骤做:

  1. 修改标签宽度为特定宽度,在这里,我使用的是25 enter image description here
  2. 按Ctrl + H 查找内容:\h+(?=AS\b) 替换为:\t 检查周围包裹 检查正则表达式 全部替换

说明:

\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 

结果:

enter image description here


0
投票

你可以用4个独立的基于正则表达式查找做到这一点/替换: 更换变化的基础上,以实现所期望的column x比对所需的前导空格的数量。

正则表达式匹配:

enter image description here

后更换:

enter image description here

所以,正则表达式和替换为每个组是:

查找内容:(?:(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将调整到ASAS red_status的最后一行。当然,你可以调整间距,但正则表达式来在您的示例中的最后一行是:

查找内容:(?:(AS red_[s].+)) //捕获AS red_status文本 替换为:(N前导空格)$ 1 // n这里将是你可能想要的任何空格数。

你应该间距增加了4号线,然后间隔使用量有将需要被添加到第3,以维持所需column x对齐。

例如,如果你在上线,然后才想4个多余的空格:

  • 一号线的匹配将需要11个前导空格前$ 1
  • 二号线的匹配将需要12个前导空格前$ 1
  • 3号线的匹配将需要6个前导空格前$ 1

...保持对齐AS的column x

© www.soinside.com 2019 - 2024. All rights reserved.