如何在正则表达式中组合行?

Sar*_*mad 5 regex sublimetext

所以我对正则表达式很陌生,我仅使用简单的文本编辑器来学习它们。我有以下文件

          84544484N
          32343545M
          32334546E
          34456434M
Run Code Online (Sandbox Code Playgroud)

我正在尝试将每一对行组合成一个制表符分隔行结果应该是:

        84544484N  32343545M
        32334546E  34456434M
Run Code Online (Sandbox Code Playgroud)

我写了以下内容:

            Search: (.*?)\n(.*?)
            Replace: \1\t\2
Run Code Online (Sandbox Code Playgroud)

这不起作用,有人可以解释原因并给我正确的解决方案。谢谢你!!

Wik*_*żew 3

(.*?)\n(.*?)模式永远不会很好地工作,因为(.*?)模式末尾的 总是返回一个空字符串(因为*?是一个惰性匹配量词,如果它可以返回零个字符(并且它可以),那么它会。使用贪婪匹配并调整模式,例如:

(.+)\r?\n *(.*)
Run Code Online (Sandbox Code Playgroud)

或者 - 由于 SublimeText 使用 Boost 正则表达式 - 您可以将任何换行序列与\R

(.+)\R *(.*)
Run Code Online (Sandbox Code Playgroud)

并替换为\1\t\2. 注意我在第一个捕获组中替换为 ,*?因为+您需要匹配非空行。

正则表达式细分:

  • (.+)- 除换行符之外的一个或多个字符(尽可能多),最多
  • \R- 换行序列(\r\n\r只是\n
  • *- 文字空格,零次或多次出现
  • (.*)- 第 2 组:除换行符之外的零个或多个字符(尽可能多)

在此输入图像描述                                                                      / 在此输入图像描述