在某个关键字后,在多个文本文件中用逗号查找和替换空格

时间:2015-07-13 10:27:05

标签: regex sublimetext2

我有一个文件夹,其中包含具有以下结构的文本文件:

@ATTRIBUTE dynamics_rms_Mean NUMERIC
@ATTRIBUTE dynamics_rms_Std NUMERIC
@ATTRIBUTE dynamics_rms_Slope NUMERIC
@ATTRIBUTE dynamics_rms_PeriodFreq NUMERIC
@ATTRIBUTE dynamics_rms_PeriodAmp NUMERIC
@ATTRIBUTE dynamics_rms_PeriodEntropy NUMERIC

@DATA
9.749956e-01 2.257056e-01 1.667380e-01 NaN NaN 9.706193e-01

我想使用 Sublime Text 来查找和替换所有这些文本文件" space"字符低于@DATA,但保留以@ATTRIBUTE开头的行中的空格。

我找到了一种方法来选择文本文件中的所有空格,但我不知道如何只选择@DATA之后的空格并在每个文件中替换它们(使用 ctrl + + ˚F)。

我很感激有关如何解决此问题的任何建议,请提前感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式替换(请注意模式末尾有一个文字空间):

(?:^@DATA|\G(?!^))\K([\s\S]*?) (?!$)

并替换为,$1

enter image description here

更换后:

enter image description here

答案 1 :(得分:1)

您可以使用此搜索/替换:

搜索:(?:\G(?!^)|^@DATA\R)[^ ]+\K[ ]

替换:,

模式细节:

(?:         # non-capturing group
    \G      # anchor for the position of the last match
    (?!^)   # not at the start of a line
  |         # OR
    ^       # start of a line
    @DATA
    \R      # any newline sequence
)          
[^ ]+       # one or more characters that are not a space
\K          # discards all on the left from the match result
[ ]         # a space

要处理多个连续的数据行并停在第一个空白行,您需要将模式更改为:

(?:\G(?!^)|^@DATA\R)[^\n ]+(?:\R[^\n ]+)?\K[ ]