将下面的行移到上一行

问题描述 投票:0回答:3

我需要帮助才能使用 Notepad++ 将行从下面的文本移动到上一行。

我可以使用正则表达式吗?

PID: AIR-CAP3502I-T-K9,  VID: V01,  SN: 0000000000
                                                   Inventory for XXXXXXXXXXX
PID: AIR-CAP3502I-T-K9,  VID: V01,  SN: 0000000000
                                                   Inventory for XXXXXXXXXXX
PID: AIR-CAP3502I-T-K9,  VID: V01,  SN: 0000000000

[在此输入图像描述]

TM

我尝试使用一些正则表达式,但它没有按预期工作。

Search: \n(.+)$
Replace: $1

Search: \n(.+)
Replace: $1
regex notepad++
3个回答
1
投票

假设您想将

Inventory for
行移动到前面的行,并用空格分隔,您可以在正则表达式模式下使用以下查找和替换:

Find:    \R\s{5,}
Replace: (single space)

演示

图案说明:

  • \R
    匹配 LF
    \n
    或 CRLF
    \r\n
  • \s{5,}
    然后匹配 5 个或更多空格(任意)引导下一行

然后,我们只用一个分隔空格替换。


1
投票

如果前一行应该是单行,并且您不想移动空行或仅包含空格的行,则可以捕获组 1 中至少一个非空白字符并匹配前面由空格包围的换行符.

在替换中使用空格,后跟组 1 的值。

查找内容:

\h*\R\h{2,}(\S)

替换为:

 $1

模式匹配:

  • \h*
    匹配可选的水平空白字符
  • \R
    匹配任何 Unicode 换行符
  • \h{2,}
    匹配 2 个或更多水平空白字符
  • (\S)
    捕获组 1 中的单个非空白字符

查看 正则表达式演示


0
投票

正则表达式

\n(.+)$
将匹配换行符后面的任何内容,直到行尾。但是,您似乎想匹配以“PID”开头的任意两行,然后删除中间的换行符。

这有效:

^PID(.*)\r\n(.*)$
PID$1 $2

请注意,Notepad++ 使用的正则表达式方言对于

\n
来说不是很聪明,因此要匹配 Windows 换行符(即 CR+LF),您必须专门使用
\r\n
(并确保正则表达式引擎不会匹配换行符
.
)

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